A点在任意位置。如果将一条线(A线)从点A绘制到另一条线(B线)的任何位置,我该如何创建一个函数来创建一条垂直于原始线(并且与B线相交)的新线?我在操纵两个点之间的特定点时遇到了麻烦(基本上,我无法找到发生交点的确切位置,并且该位置是我的项目的关键)。
对此的其他约束条件包括,如果线A与线B相交并创建一条垂直线,则它会创建沿与线A相同的方向但向后的线C。
重要提示:由于一条垂直的新线相对于线A可以向左或向右90度,因此,如果长度为X的线与另一条线(C线)在另一侧而不是另一条线交叉,我该怎么做,则仅在非C线相交路径中生成第三条生成的线。
最后,这种功能需要递归。有没有人有任何想法可以帮助我朝正确的方向发展?
顺便说一句,我正在使用Python,并试图找出一种利用matplotlib的解决方案(除此以外,还可以使用其他软件包)。
非常感谢您在此频道上提供的所有帮助和支持!如果这对我制作一些示范性图纸有帮助,请告诉我!
R = A + t * dir
A
是起点,t
是参数(此处值> = 0),dir
是单位方向矢量(其分量是方向角的余弦和正弦)也以参数形式表示多边形或折线
Side[i] = P[i] + u * (P[i-1] - P[i])
其中P[i]
是第i个顶点,u
值位于0..1
范围内现在使用任何方法找到射线与某边的交点(例如,查看Garrett Rees的答案here)。如果
u
参数在0..1
范围内,则交点位于侧面。找到交点
I
后,更改射线方向:
(dir'.x, dir'y) = (-dir.y, dir.x)
对应于向量沿PiW / 2沿CCW方向旋转。如果您需要其他方向,请更改标志。也许您想改变方向以使新矢量成为“内部”-在这种情况下,请检查旧dir
与侧面方向矢量的标量积的符号。现在新射线方程是
R' = I + t * dir'
并继续另一端。