PHP

计算三角形面积

2010/11/3

方案一:

没得说 三角形面积=底*高/2。

方案二:

三角形面积=sinA*b*c/2.

sinA=sqrt(1-cosA*cosA);

cosA根据余弦定理:CosA=(c^2+b^2-a^2)/2bc;

缺点:中间因为浮点型的转换,浮点型相除,开根号,造成误差偏大。

方案三:海伦公式

S=√[p(p-a)(p-b)(p-c)]   而公式里的p为半周长:   p=(a+b+c)/2

缺点:在计算中还是存在误差,但是比方案二的方法有所改观。

方案四:叉积

在二维和三维坐标系中,已知三点就可以知道三角形面积。

设a=(a1,b1,c1),b=(a2,b2,c2)(两向量),   则 a×b=   | i j k|   |a1 b1 c1|   |a2 b2 c2|   =(b1c2-b2c1,c1a2-a1c2,a1b2-a2b1)=|a|*|b|*sin@(@根据右手定则判断,按逆时针方向转动)(i,j,k为单位向量,此在三维坐标系中)

在二维中,同理更简单一点。

总结:在叉积中,这种算法的效率高,而且可以更好的解决问题。叉积还可以运用在判断三件的顺序上,有空,我再一帖上。因本人不才,目前知道就这几种,如果有新的方法,我会更新这篇文章。