Python 3.x Python:如何在两条n维直线上连续反映多个n维点

Python 3.x Python:如何在两条n维直线上连续反映多个n维点,python-3.x,math,geometry,transformation,n-dimensional,Python 3.x,Math,Geometry,Transformation,N Dimensional,Python:如何在两条线中依次反映几个(如果不是很多的话)n维点,每个n维点由两个n维坐标定义 给定几个n维点 eg P1 = (4, 3, 2, 5, 7) P2 = (7, 3, 2, 2, 3), 以及两条反射线中每一条的两个n维点 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,并返

Python:如何在两条线中依次反映几个(如果不是很多的话)n维点,每个n维点由两个n维坐标定义

给定几个n维点

eg P1 = (4, 3, 2, 5, 7) P2 = (7, 3, 2, 2, 3),
以及两条反射线中每一条的两个n维点

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维旋转,但很快意识到这对于我的项目范围来说太难了。我切换到尝试nd反射,通过迭代每个点并找到其与反射线的交点,这样我可以将交点和给定点之间的假想线延伸到线的另一侧,以创建新的反射点。我认为这不是解决这个问题的最有效的方法,在网上找不到更多关于寻找交叉点坐标而不是距离的信息,这就是为什么我要问这个问题——看看是否有人能提供一个一体化的解决方案

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


任何提示,谢谢

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

首先定义向量

AP = P - A
AB = B - A
N是p在AB线上的投影,我们使用向量的点(标量)积计算它:

AN = AB * Dot(AP, AB) / Dot(AB, AB)
差别

PN = AB * Dot(AP, AB) / Dot(AB, AB) - AP
对称(反射)点

示例是2D,但这种方法也适用于n维情况

S = P + 2 * PN  = 
    P + 2 * AB * Dot(AP, AB) / Dot(AB, AB) - 2 * AP