乐趣区

从三角形面积到不规则多边形面积

2019-09-03 13:16:24,“求凹多边形的面积”,这是一个面试题,我被问到了。所以就想将这个问题消灭成沫沫以明志。

一,三角形的面积公式

1. 平行四边形的面积 s = 底 * 高

2. 三角形可以视之为平行四边形的一半。因此:

三角形的面积 = 底 * 高 /2


二,不知高底,知其点位,求三角形的面积

1. 案例:已知三角形 ABC,ABC 的三点为 A(0,0),B(cx,cy),C(bx,by),求三角形面积

解:
① 获取三角形的矩形边界:
上边界 =cy
右边界 =bx
下边界 =0
左边界 =0

② 绘制边界,得到 D 点和三个三角形 t1,t2,t3

③ 由上图可知:

● 矩形面积
=bx*cy

● t1 面积
=(cx*cy)/2

● t2 面积
=(bx-cx)*(cy-by)/2
=(bxcy – bxby – cxcy + cxby)/2

● t3 面积
= bx*by/2

● 三角形 ABC 的面积
= 矩形面积 – t1 面积 – t2 面积 – t3 面积
= bxcy – (cxcy)/2 – (bxcy – bxby – cxcy + cxby)/2 – (bx*by)/2
= (2bxcy – cxcy – (bxcy – bxby – cxcy + cxby) – bxby)/2
= (2bxcy – cxcy – bxcy + bxby + cxcy – cxby – bxby)/2
= (2bxcy – bxcy – cxby)/2
= (bxcy – cxby)/2

2. 三角形还有一种画法,如图

做辅助线:

● 大三角形 ABD 的面积
=cx*cy/2

● t1 面积
=(cx-bx)*(cy-by)/2
=(cxcy-cxby-bxcy+bxby)/2
=(cxcy-cxby-bxcy+bxby)/2

● t2 面积
=(cx-bx)*by
=cxby-bxby

● t3 面积
= bx*by/2

● 三角形 ABC 的面积
= 大三角形 ABD 的面积 – t1 面积 – t2 面积 – t3 面积
= (cxcy – (cxcy-cxby-bxcy+bxby) – (2cxby-2bxby) – bx*by)/2
= (cxcy – cxcy+cxby+bxcy-bxby – 2cxby+2bxby – bx*by)/2
= (bxcy-cxby)/2

对比一下上一种三角形的面积公式:(bxcy – cxby)/2,两个公式是一样的,所以这个就是求一顶点在圆心的三角形面积的公式了。

3. 再来一画法,跟三角形耗上了

● 矩形面积
=bx*(cy-by)
=bxcy-bxby

● t1 面积
=(cx*cy)/2

● t2 面积
=(bx-cx)*(cy-by)/2
=(bxcy – bxby – cxcy + cxby)/2

● t3 面积
= -bx*by/2

● 三角形 ABC 的面积
= 矩形面积 – t1 面积 – t2 面积 – t3 面积
= bxcy-bxby – (cxcy)/2 – (bxcy – bxby – cxcy + cxby)/2 – (-bxby/2)
= (2bxcy-2bxby – cxcy – bxcy + bxby + cxcy – cxby + bxby)/2
= (bxcy – cxby)/2

还是一样的公式 (bxcy – cxby)/2,所以这就是三角形面积的计算公式

三,进入多边形

1. 多边形里,有一种游戏规则,叫做连点成面,如图:

● 这叫扇形面,在 WebGl 里叫 TRIANGLE_FAN,从 A 到 G 逆时针绘制,所有面都有一个共同的顶点 A。

● 在平面中计算,扇形面的面积 = (bxcy – cxby)/2 + (cxdy – dxcy)/2 + … + (fxgy – gxfy)/2

2. 多边形里还有一种另类的叫:异形。

如图:

● 连一下线:

有种想哭的节奏(┬_┬)

3. 先观察一下异形的规律

  • 异性都存在存在逆折点。
  • 逆折的判断条件:默认逆时针连点,若基点到下一个点(如 C)的角度小于基点到上一个点(如 B)的角度,即存在顺时针连点,那么此图形就存在逆折。
  • 逆折点:发生逆折的点,如点 B,点 D

四,复杂的异形简化

1. 理解 ABC 的面积的计算原理是关键。

(bxcy – cxby)/2 公式是基于逆时针定义的

2. 我们在连点绘制多边形时,会有如下规则:

  • 按照顶点在集合中的顺序,依次连接,而不会考虑连接的方向。
  • 在计算面积时,依旧会按照点的顺序计算。

3. 我们在按照一种方向的时针公式计算以不同方向绘制的三角形时,便会出现面积为负数的三角形。如:

三角形 ABC 的真正面积是:(cxby – bxcy)/2,即 -(bxcy – cxby)/2,因此我们依旧以(bxcy – cxby)/2 计算得到的面积就是负数

4. 计算异形 ABCD 的面积

ABCD 的面积
=ABC 面积 + ACD 面积
=(bxcy – cxby)/2 + (cxdy – dxcy)/2

因为 ABC 面积 为负数,异形 ABCD 的面积正好是:大三角形 ACD 面积 – ABC 的真正面积

5. 总结
在异形面积的计算中,正常扇形的计算公式依旧是适用,即:
多边形面积 = (bxcy – cxby)/2 + (cxdy – dxcy)/2 + … + (fxgy – gxfy)/2

退出移动版