Graphics 如何使用painters算法对这些线进行排序?
假设我得到了以下图表,并且位于eye1 使用painters算法,我们从后向前绘制。因此,如果我必须使用painters算法(例如,从第一次绘制到最后一次)对以下线条进行排序,我会认为它是C、A、e、D、B。让我们绊倒的是线条D和B的表面法线。因为B的法线背对眼睛1,而D的法线不是,这是否意味着我们在D之前绘制B?Graphics 如何使用painters算法对这些线进行排序?,graphics,3d,Graphics,3d,假设我得到了以下图表,并且位于eye1 使用painters算法,我们从后向前绘制。因此,如果我必须使用painters算法(例如,从第一次绘制到最后一次)对以下线条进行排序,我会认为它是C、A、e、D、B。让我们绊倒的是线条D和B的表面法线。因为B的法线背对眼睛1,而D的法线不是,这是否意味着我们在D之前绘制B? 谢谢大家 如果背面剔除是相关的(即已知曲面是闭合的),则根本不绘制B 否则法线的方向将不起作用。正如@Yves Daoust所指出的,如果启用背面消隐,您可能会放弃“B”,但是,鉴
谢谢大家 如果背面剔除是相关的(即已知曲面是闭合的),则根本不绘制B
否则法线的方向将不起作用。正如@Yves Daoust所指出的,如果启用背面消隐,您可能会放弃“B”,但是,鉴于您的示例没有闭合几何体,我们将假定它将被绘制 旁白:顺便问一句,你知道SE上有一个网站可以解答这类问题吗 我研究这个已经有几十年了,但是如果你打算用它来为画家排序,那么你将从一个初始的对象列表开始,按最大深度排序,从“最远到最近”,即[C,a,e,D,B],但是这个列表需要重新排序 Newell、Newell和Sancha实际上是两个嵌套循环,用于修改列表。它首先将外循环中的“P”设置为列表中最远的项,然后在内循环中通过每个较近的对象执行步骤Q,以确保“P不会遮挡Q”。它还维护每个对象的“已移动”标志,以处理棘手的情况 “p不模糊Q”测试由一组逐渐昂贵的子测试组成:
更复杂的是,如果你发现你要移动一个已经移动过的对象,那么你有一个循环,你需要细分一个对象(使用其中一个涉及的三角形平面-类似于构建BSP时产生的平面),但这是另一个主题。不完全确定你的意思“法线的方向”,但如果您使用Newell、Newell和Sancha的方法来执行Painter算法的排序,那么法线确实起到了作用,因为您需要知道三角形/曲面的平面。这些构成了“P不模糊Q”(对于多边形P&Q)的一部分在NNS算法中进行测试。@SimonF:OP的问题是关于面对面的一面。孤立的面对这两个面都是不透明的。