html5画布中重叠的多边形

时间:2011-07-27 10:30:07

标签: html5 3d 2d overlapping polygons

我正在尝试在html5画布中渲染简单的3d形状(在这种特殊情况下,一个立方体)。将3d点转换为2d平面很容易,所以我继续开始着色多边形。它们以错误的顺序重叠。所以我只计算每个多边形的距离(基于4个角的平均值)并根据它进行排序。

除非这不起作用。那么你如何决定首先绘制的多边形?

P.S。我正在努力学习如何制作这个,所以使用现有的库或其他东西并不能真正起作用。

1 个答案:

答案 0 :(得分:1)

经过一段时间的搜索,我发现了一种检查方法。它是通过“背面剔除”完成的,根据我的理解,你首先计算多边形的2d位置,然后取3个点,然后比较它们以确定多边形面向哪个方向。

我使用的支票如下:

ifVisible = function(p1, p2, p3)
{
    return ((p2[0]-p1[0])*(p3[1]-p1[1])>(p3[0]-p1[0])*(p2[1]-p1[1]));
}

其中p1,p2和p3是包含点的x和y位置的数组。

这仅适用于您的多边形中的点的订单,(在我的情况下,当面向相机时,位置是顺时针方向)