将四边形(由四个x,y
点组成)转换为三角形条带的最快方法是什么?我很清楚现有的一般三角测量算法,但我需要一个简短的、优化好的算法,只处理四边形。
我目前的算法是这样做的,它适用于大多数四边形,但仍然会混淆一些点:
#define fp(f) bounds.p##f
/* Sort four points in ascending order by their Y values */
point_sort4_y(&fp(1), &fp(2), &fp(3), &fp(4));
/* Bottom two */
if (fminf(-fp(1).x, -fp(2).x) == -fp(2).x)
{
out_quad.p1 = fp(2);
out_quad.p2 = fp(1);
}
else
{
out_quad.p1 = fp(1);
out_quad.p2 = fp(2);
}
/* Top two */
if (fminf(-fp(3).x, -fp(4).x) == -fp(3).x)
{
out_quad.p3 = fp(3);
out_quad.p4 = fp(4);
}
else
{
out_quad.p3 = fp(4);
out_quad.p4 = fp(3);
}
编辑:我问的是如何将单个四边形转换为应由四个点组成的单个三角形条带。