Algorithm 查找由线段(三维多边形上的原点)切割的切片

Algorithm 查找由线段(三维多边形上的原点)切割的切片,algorithm,language-agnostic,3d,polygon,line-segment,Algorithm,Language Agnostic,3d,Polygon,Line Segment,我有一个三角形顶点数组(多边形的面),类似于 [[[a, b, c], [d, e, f], [g, h, i]], ...] 我有一条线段,由两个3D顶点表示,比如说[[j,k,l],[m,n,o]] 我有一个观点[p,q,r] 我想做的是,将点投影到多边形上,穿过线段,然后检查它是否完全分割多边形(我认为4个接触点就足够了?我可能错了)。如果有,我需要所有的交点,它们位于边和顶点上 我在这里完全迷路了。任何指针都将受到欢迎。我们可以在不丧失一般性的情况下假设由点和线段(此后为T)形成的三角

我有一个三角形顶点数组(多边形的面),类似于

[[[a, b, c], [d, e, f], [g, h, i]], ...]
我有一条线段,由两个3D顶点表示,比如说
[[j,k,l],[m,n,o]]

我有一个观点[p,q,r]

我想做的是,将点投影到多边形上,穿过线段,然后检查它是否完全分割多边形(我认为4个接触点就足够了?我可能错了)。如果有,我需要所有的交点,它们位于边和顶点上


我在这里完全迷路了。任何指针都将受到欢迎。

我们可以在不丧失一般性的情况下假设由点和线段(此后为T)形成的三角形位于x-y平面上。(否则,请适当旋转所有部件)

我们在三角形面上循环,对于y坐标有不同符号的面上的任何一对顶点(即,对于切割x-y平面的任何边),我们检查边与x-y平面的交点,并确保它在T范围内

它认为T“完全分割多边形”当且仅当所有这些检查都为真时

运行时间为
O(面数)

所有描述的操作都非常简单。例如,检查某物是否在T的边界内,就是简单地检查两个不等式,其中两条直线的方程定义了T(即从线段的点到端点)


所有带边的POI(以及因此而产生的顶点)都可以在循环中计算-它只是带x-y平面的边的POI。

我们可以在不丧失一般性的情况下假设由点和线段(此后T)形成的三角形位于x-y平面。(否则,请适当旋转所有部件)

我们在三角形面上循环,对于y坐标有不同符号的面上的任何一对顶点(即,对于切割x-y平面的任何边),我们检查边与x-y平面的交点,并确保它在T范围内

它认为T“完全分割多边形”当且仅当所有这些检查都为真时

运行时间为
O(面数)

所有描述的操作都非常简单。例如,检查某物是否在T的边界内,就是简单地检查两个不等式,其中两条直线的方程定义了T(即从线段的点到端点)


所有带边的POI(以及因此产生的顶点)都可以在循环中计算-它只是带x-y平面的边的POI。

多边形是二维的。多面体需要一个平面才能被切割。@IgnacioVazquez Abrams不知道它被称为多面体。谢谢你说的“需要一个平面”是什么意思?一条线不能切割多面体;它没有足够的尺寸。是的,如果我错了,请纠正我,但是一个点和一个线段不够吗?可以将平面视为从点到线段的每个点的光线。那不是构成一个无限平面吗?足够切片了吗?好吧,我知道问题是什么了。但是会有无限多的交叉点;也许您应该将要求限制在边和顶点的交点。多边形是二维的。多面体需要一个平面才能被切割。@IgnacioVazquez Abrams不知道它被称为多面体。谢谢你说的“需要一个平面”是什么意思?一条线不能切割多面体;它没有足够的尺寸。是的,如果我错了,请纠正我,但是一个点和一个线段不够吗?可以将平面视为从点到线段每一点的光线。那不是构成一个无限平面吗?足够切片了吗?好吧,我知道问题是什么了。但是会有无限多的交叉点;也许您应该将要求限制在边和顶点的交点。