首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:如何在两条n维线中连续反映多个n维点

Python:如何在两条n维线中连续反映多个n维点
EN

Stack Overflow用户
提问于 2019-10-17 01:49:56
回答 1查看 197关注 0票数 0

Python:如何在两条线中一条接一条地反映几个(如果不是很多)n维点,这两条线分别由两个n维坐标定义。

给定几个N维点,

代码语言:javascript
复制
eg P1 = (4, 3, 2, 5, 7) P2 = (7, 3, 2, 2, 3),

并且两条反射线中的每一条都有两个N维点,

代码语言:javascript
复制
eg L1P1 = (5, 6, 4, 3, 2) L1P2 = (7, 6, 9, 8, 1) L2P1 = (1, 3, 4, 9, 2) L2P2 = (5, 4, 3, 7, 6),

在第一行和第二行中反射未定义直线的点,在本例中为P1和P2,并返回每个双反射点的坐标。

我对这类数学还是个新手,我不能让任何东西都能做到这一点。我开始尝试实现n维旋转,给定每个轴的旋转角度,但很快意识到这对我的项目范围来说太难了。我切换到尝试通过迭代每个点并找到它与反射线的交点来进行反射,这样我就可以将交叉点和给定点之间的假想线延伸到线的另一边,以创建新的反射点。我认为这不是解决这个问题的最有效的方法,而且在网上找不到太多关于找到交叉口坐标而不是距离的信息,这就是为什么我问这个问题-看看是否有人可以帮助提供一个一体化的解决方案。

我使用的是Python3.7,可以使用任何包,尽管流行的包更好-效率是最重要的。

非常感谢任何建议,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-10-17 09:57:20

我们必须计算点S,具有点P和线AB

首先定义向量

代码语言:javascript
复制
AP = P - A
AB = B - A

N是P在AB线上的投影,我们使用向量的点(标量)积来计算它:

代码语言:javascript
复制
AN = AB * Dot(AP, AB) / Dot(AB, AB)

差异

代码语言:javascript
复制
PN = AB * Dot(AP, AB) / Dot(AB, AB) - AP

对称(反射)点

代码语言:javascript
复制
S = P + 2 * PN  = 
    P + 2 * AB * Dot(AP, AB) / Dot(AB, AB) - 2 * AP

这个例子是2D的,但这种方法也适用于n维的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58419034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档