opengl如何判断多边形的点列是否逆时针方向
opengl要求多边性输出时指定点列是逆时针还是顺时针方向(沿着法线的方向看)
如何判断阿 只用邻边的叉积好像不行啊 还要考虑法线吧
------解决方案--------------------
double x[n],y[n],ss;
int i;
ss = 0;
for(i=0;i <n-1;i++)
ss += (x[i+1]-x[i])*(y[i+1]-y[i])*0.5;
if(ss <0)逆时针;
------解决方案--------------------
对于多边形每条边:
把终点减掉起点,得到一个向量,用复数表示为 a+bi,这个向量代表了这条边的方向;
用相临两条边的的向量求夹角(带正负的,也用向量表示),例如:
前一条边为a+bi,后一条边为c+di,夹角为 (a+bi)/(c+di),化简请自己查公式;
循环计算该图形的所有边,把所有的夹角求和;
逆时针必然为360度,顺时针必然为-360度。
具体算法和演示代码,可以联系我本人
opengl要求多边性输出时指定点列是逆时针还是顺时针方向(沿着法线的方向看)
如何判断阿 只用邻边的叉积好像不行啊 还要考虑法线吧
------解决方案--------------------
double x[n],y[n],ss;
int i;
ss = 0;
for(i=0;i <n-1;i++)
ss += (x[i+1]-x[i])*(y[i+1]-y[i])*0.5;
if(ss <0)逆时针;
------解决方案--------------------
对于多边形每条边:
把终点减掉起点,得到一个向量,用复数表示为 a+bi,这个向量代表了这条边的方向;
用相临两条边的的向量求夹角(带正负的,也用向量表示),例如:
前一条边为a+bi,后一条边为c+di,夹角为 (a+bi)/(c+di),化简请自己查公式;
循环计算该图形的所有边,把所有的夹角求和;
逆时针必然为360度,顺时针必然为-360度。
具体算法和演示代码,可以联系我本人