编程语言
首页 > 编程语言> > javascript-如何“排序”多边形3d?

javascript-如何“排序”多边形3d?

作者:互联网

我仍在使用“ javascript 3d引擎”(link inside stackoverflow).
首先,我所有的多边形都是立方体的面,因此按平均Z排序它们可以正常工作.
但是现在我已经“进化”了,我想画我的多边形(可能包含四个以上的顶点)
按照正确的顺序,即最后靠近照相机的人.

基本上,
我知道如何旋转它们并将其“透视”化为2D,
但不知道如何以正确的顺序绘制它们.

只是为了澄清:

//my 3d shape = array of polygons
//polygon = array of vertices
//vertex = point with x,y,z
//rotation is around (0,0,0) and my view point is (0,0,something) I guess.

有人可以帮忙吗?

ps:我想出了一些“捕获短语”,寻找解决方案:z缓冲,射线投射(?!),平面方程,视图矢量,等等-猜我需要一个简单易懂的答案,所以这就是为什么问这个.谢谢.

p.s2:对于多边形的重叠或相交,我不太在意……所以也许画家的算法确实不错.但是:到底是什么?如何确定多边形的距离?多边形有很多点.

解决方法:

将多边形排序然后从下至上绘制它们的方法称为“画家算法”.不幸的是,排序步骤通常是一个无法解决的问题,因为三个多边形有可能彼此重叠:

http://i54.tinypic.com/ju8umr.jpg

因此,不一定有任何“在顶部”的多边形.使用Z缓冲区或BSP树(涉及分割多边形)的替代方法不会遇到此问题.

标签:3d,polygons,javascript
来源: https://codeday.me/bug/20191023/1914099.html