考虑一个以坐标原点为中心的球体和一个内接的二十面体,它的方向是使两个最远的顶点位于Z坐标轴上,并且从该顶点中的任何一个顶点出现的边之一位于XZ平面上。
考虑一个起始于球体中心的给定向量x
。由该向量给出的方向,在某一点穿透二十面体的表面。
有没有一种优雅的方法可以找到被穿透的面(考虑到所有的面都被枚举了),然后找到这个面上的穿刺点?此任务用于将穿刺点投影到展开(展开)的平面二十面体表面。
发布于 2011-01-28 06:16:12
好吧,这不是我真正的领域,但没有其他人回答,所以我将尝试一下。您可以将一个二十面体表示为12个顶点- 10个赤道顶点,加上顶部和底部(它们本身没有赤道性质,这只是我们坐标系的一种分类方式)。
反过来,这些顶点可以表示为线段-一端是原点,另一端是顶点。考虑到这一点,你可以推导出赤道以上的高度。如果您知道矢量的高度(同样,在赤道之上),则可以确定矢量的三个部分中的哪一部分相交-北面、南面或赤道集。
从你的向量,你也可以确定方位。如果从顶点向量得到相应的方位角和高度,这是一个相当简单的计算,一组两个面(因此四个顶点)。计算给定向量之间的角度间隔,每个顶点段将告诉您它与两个面中的哪一个面对面,两个方向角和中较小的一个将是该面。
这就是我被卡住的地方……我看不到一种简单的方法来确定与人脸的交点。希望这将对第一部分有所帮助,至少。
https://stackoverflow.com/questions/4821350
复制相似问题