我正在构建一个简单的3D模型来绘制3D立方体。在该模型中,在A前面的C前面的B前面没有像A这样的特殊循环情况,或者A的一部分在B的前面但是B的一部分在A的前面。
现在给出2个在3D中不相交的多边形,视图方向上的两个都是可见的(或部分可见的)是Oz。确定哪一个在前面?显然,我无法使用minZ或maxZ。这是一个反例:
可以在您的情况下定义:
包含给定面的平面定义了两个半空间。如果它的所有四个点都在与眼睛相同的半平面中,则另一个面在前面。
请注意,除非您的模型具有非常特殊/强大的属性,否则没有简单/明显的标准。
在存在解决方案的情况下,这是相对简单的:投影中的长方体(右矩形棱柱)位于前面iff(当且仅当如此)其每个可见面都显示为完整的平行四边形。
在上面的例子中,红色长方体在前面;两个绿色面被遮挡(不是平行四边形)。