高分求算法:如何判断空间三点是顺时针还是逆时针方向
已知空间三点:
A(x1,y1,z1);
B(x2,y2,z2);
C(x3,y3,z3);
需要得到一个顺时针或者逆时针的序列,请问如何判断?
举例如下:
A(0,1,0)
B(1,0,0)
C(-1,0,0)
则 ABC,BCA,CAB是一个顺时针方向的序列,
而 ACB,CBA,BAC是一个逆时针方向的序列
问题点数:100、回复次数:10Top
1 楼rick29(rick.z)回复于 2005-07-19 09:28:57 得分 20
不清楚。试试投影到某一平面上,成为一个三角形(直线等情况特殊判断),从三角形内一点按序向三个点引直线,计算与轴的交角。若三个角为递增,则为顺时针,否则为逆时针。当然为了方便判断,可以把这一角度取值范围限定在[0, 360)之内。
只是提供一个思路,是否正确还有待检验。:)Top
2 楼Rafier(小昌)回复于 2005-07-19 09:45:22 得分 20
三角形ABC构成了一个面,根据节点顺序的不同,其法向亦不同(顺时针和逆时针正好相反),判断法向与Z轴(根据你的例子Z轴是用来判断方向的“标志”)的位置关系即可。Top
3 楼oceanslan(公安局长)回复于 2005-07-19 10:01:17 得分 0
高手,where is the 高手??Top
4 楼spanzhang(红尘斩丝客)回复于 2005-07-19 10:32:17 得分 20
使用向量叉积来判断。Top
5 楼daydaymissyou(想当高手)回复于 2005-07-19 13:46:44 得分 20
数学都忘了,好像可以从任一点出发, 和另两个点组成两个空间向量, 计算点积(或X积)就能判断, 找找书看看, 有的.Top
6 楼chenfei1981(king)回复于 2005-07-19 14:13:37 得分 0
对,用向量叉乘就可以了Top
7 楼chenfei1981(king)回复于 2005-07-19 14:16:31 得分 0
具体的比如先求两个向量ab,ac,然后ab叉乘ac,再根据右手定则判断就ok了Top
8 楼Rafier(小昌)回复于 2005-07-25 21:04:02 得分 20
是不是高手答的你才相信?
这个是几何学的知识,与程序无关的!
楼上的已经把求三角形法向的方法说得很明白了,你不会还想要求叉积的公式吧?
而且楼上说“再根据右手定则判断就ok了”是不对的,“右手定则”在使用叉积时已经用来决定叉积结果的向量方向的,现在要做的是判断,法向与“Z轴”(或你规定参照轴)的夹角了,也就是使用点积!
Top
9 楼Rafier(小昌)回复于 2005-07-25 21:05:33 得分 0
我不是高手!
悄悄的回答,给分的不要!Top
10 楼AntonlioX(做人要厚道)回复于 2005-07-25 21:13:09 得分 0
upTop




