算法与acm

平面坐标系里的几个公式

2008年11月1日 阅读(458)

1.三角形面积公式

已知三角形三个顶点,求其面积,直接使用叉积,如(x1,y1)(x2,y2) (x3,y3)

叉积是指(x2-x1,y2-y1) (x3-x1,y3-y1)两向量的叉积

s=0.5*abs( (x2-x1)*(y3-y1) -(y2-y1)*(x3-x1) )

 

2.平面多边形面积

对于凸多边形实际上利用了三角形面积求法,将多边形划分成了三角形

而对于非凸多边形,要注意是S(P,A1,A2)可能为负,必须再最后求abs,而不是对单独的S求abs。

 

对多边形A1A2A3、、、An(顺或逆时针都可以),设平面上有任意的一点P,则有:
S(A1,A2,A3,、、、,An)
= abs(S(P,A1,A2) + S(P,A2,A3)+、、、+S(P,An,A1))

P是可以取任意的一点,用(0,0)时就是下面的了:

设点顺序 (x1 y1) (x2 y2) … (xn yn)
则面积等于
|x1 y1| |x2 y2| |xn yn|
0.5 * abs( | | + | | + …… + | | )
|x2 y2| |x3 y3| |x1 y1|

其中
|x1 y1|
| |=x1*y2-y1*x2
|x2 y2|
因此面积公式展开为:

|x1 y1| |x2 y2| |xn yn|
0.5 * abs( | | + | | + …… + | | )=0.5*abs(x1*y2-y1*x2+x2*y3-y2*x3+…+xn*y1-yn*x1)
|x2 y2| |x3 y3| |x1 y1|

 

3.已知圆内接三角形,求圆的半径

r = (a*b*c)/4s

a,b,c代表三边边长,s代表三角形面积

证明如下:

设任意一个三角形的三边为a, b, c, 边a所对的角为A. 所求外接圆半径为R 根据任意三角形面积公式, 得到 (bcsinA)/2 = S 再根据正弦定理, 得到 2RsinA = a 两式一除, 得到 (bc/2) / (2R) = S/a 整理, 就得到 R = abc/(4S) 4.已知两点经度,维度,求球面距离 若地球上两点的经纬坐标为A(a1,b1),B(a2,b2)(a1,a2为经度,b1,b2为纬度。纬度北正南负,经度东正西负)

则两点在地球表面上的距离为,R代表地球半径,a1,a2…均采用弧度表示

d=R*arccos[cosb1*cosb2*cos(a1-a2)+sinb1*sinb2]

You Might Also Like