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

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理