[从头学数学] 第79节 多边形的面积

剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第九层功法的修炼,
这次要修炼的目标是[多边形的面积]。

正剧开始:

星历2016年02月10日 11:43:24, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究图形的面积。


[从头学数学] 第79节 多边形的面积_第1张图片


[人叫板老师]这次提到的多边形主要有三个,分别是平行四边形,三角形和梯形。

[从头学数学] 第79节 多边形的面积_第2张图片


[从头学数学] 第79节 多边形的面积_第3张图片

[从头学数学] 第79节 多边形的面积_第4张图片

为了能方便计算这些多边形的面积,阿伟做了一个小工具:

<span style="font-size:18px;">>>> 
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    2
S=ah/2, a=?, h=?, 请按顺序输入a,h,用空格分隔:
>>>    9 7.8
三角形 S=ah/2, a=9, h=7.8 ==> S=35.1

>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    q


def areaCalc():
    tolerance = 0.0001;
    while (True):
        try:
            c = input('面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:\n>>>    ');
            if c == '1':
                s = input('S=ah, a=?, h=?, 请按顺序输入a,h,用空格分隔:\n>>>    ');
                if (s.find(' ') != -1):
                    a = s.split(' ');
                elif (s.find(',') != -1):
                    a = s.split(',');
                result = float(a[0])*float(a[1]);
                if abs(int(result)-result)<tolerance:
                    result = int(result);
                else:
                    result = round(result, 3);
                    
                print('平行四边形 S=ah, a={0}, h={1} ==> S={2}'.format(\
                    a[0], a[1], result));
                print('\n>>>');
            elif c == '2':
                s = input('S=ah/2, a=?, h=?, 请按顺序输入a,h,用空格分隔:\n>>>    ');
                if (s.find(' ') != -1):
                    a = s.split(' ');
                elif (s.find(',') != -1):
                    a = s.split(',');

                result = float(a[0])*float(a[1])/2;
                if abs(int(result)-result)<tolerance:
                    result = int(result);
                else:
                    result = round(result, 3);
                print('三角形 S=ah/2, a={0}, h={1} ==> S={2}'.format(\
                    a[0], a[1], result));
                print('\n>>>');
            elif c == '3':
                s = input('S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:\n>>>    ');
                if (s.find(' ') != -1):
                    a = s.split(' ');
                elif (s.find(',') != -1):
                    a = s.split(',');

                result = (float(a[0])+float(a[1]))*float(a[2])/2;
                if abs(int(result)-result)<tolerance:
                    result = int(result);
                else:
                    result = round(result, 3);
                print('梯形 S=(a+b)*h/2, a={0}, b={1}, h={2} ==> S={3}'.format(\
                    a[0], a[1], a[2], result));
                print('\n>>>');
            else:
                break;
            
        except:
            pass;</span>

当然,这个工具还是很麻烦的,尤其对于很多很简单的小题,还不如口算来得快,但给小伟用正合适。

下面就可以来做题了:

[从头学数学] 第79节 多边形的面积_第5张图片

[从头学数学] 第79节 多边形的面积_第6张图片

<span style="font-size:18px;">>>> 
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    36 120 135
梯形 S=(a+b)*h/2, a=36, b=120, h=135 ==> S=10530

>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    q
</span>



<span style="font-size:18px;">>>> 
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    40 71 40
梯形 S=(a+b)*h/2, a=40, b=71, h=40 ==> S=2220

>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    45 65 40
梯形 S=(a+b)*h/2, a=45, b=65, h=40 ==> S=2200</span>


[从头学数学] 第79节 多边形的面积_第7张图片

<span style="font-size:18px;">#题1-2

>>> 
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    2.8 1.4 1.2
梯形 S=(a+b)*h/2, a=2.8, b=1.4, h=1.2 ==> S=2.52

>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    4 3 5
梯形 S=(a+b)*h/2, a=4, b=3, h=5 ==> S=17.5

>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    5.9 8.2 4.8
梯形 S=(a+b)*h/2, a=5.9, b=8.2, h=4.8 ==> S=33.84

>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    12 15 20
梯形 S=(a+b)*h/2, a=12, b=15, h=20 ==> S=270</span>

[从头学数学] 第79节 多边形的面积_第8张图片

<span style="font-size:18px;">#题4-5
>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    100 48 250
梯形 S=(a+b)*h/2, a=100, b=48, h=250 ==> S=18500

>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    12 18 9
梯形 S=(a+b)*h/2, a=12, b=18, h=9 ==> S=135

>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    5 2.7 3.4
梯形 S=(a+b)*h/2, a=5, b=2.7, h=3.4 ==> S=13.09

>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    7.2 3.4 4.8
梯形 S=(a+b)*h/2, a=7.2, b=3.4, h=4.8 ==> S=25.44</span>


<span style="font-size:18px;">>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    3
S=(a+b)*h/2, a=?, b=?, h=?, 请按顺序输入a,b,h,用空格分隔:
>>>    2 6 5
梯形 S=(a+b)*h/2, a=2, b=6, h=5 ==> S=20</span>

[从头学数学] 第79节 多边形的面积_第9张图片

<span style="font-size:18px;">>>>
面积计算:<1>平行四边形 <2>三角形 <3>梯形 <q>计算结束,退出:
>>>    2
S=ah/2, a=?, h=?, 请按顺序输入a,h,用空格分隔:
>>>    1.5 0.9
三角形 S=ah/2, a=1.5, h=0.9 ==> S=0.675</span>


小伟一向对于太过于简单的东西不感兴趣,但是,现在让小伟感兴趣的东西来了:

[从头学数学] 第79节 多边形的面积_第10张图片

[人叫板老师]太有创意了,竟然让小伟估算叶子的面积,这个叶子算几边形呢?

但是这种问题也难不倒小伟,这不,很快就算出来了。


怎么算的呢?

<span style="font-size:18px;">/**
* @usage   计算不规则图形面积的图示
* @author  mw
* @date    2016年02月10日  星期三  10:49:06 
* @param
* @return
*
*/
function areaCalc() {
		//图片
		var image = new Image();
		image.src = "./1.jpg";
		//只处理这100*100个象素
		var width = 450;
		var height = 400;
		
		image.onload = function() {
			plot.drawImage(image);
			var imagedata = plot.getImageData(0, 0, width, height);	
			
			var size = imagedata.data.length/4;
			var count = 0;
			
			for (var i = 0; i < size; i++) {
				if (imagedata.data[4*i+1] - imagedata.data[4*i] > 128) {
					count++;
					imagedata.data[4*i] = 255;
				}
			}
			
			var area = count / (400*450)*72;
			

			plot.save();
			plot.translate(600, 0);
			plot.putImageData(imagedata, 0, 0);
			plot.drawImage(image);
			plot.restore();
			
			var s = 'count: '+count.toFixed(0)+', ' +'总面积: '+area.toFixed(3);
			plot.fillText(s, 350, 300, 200);
		}

}
</span>

不过,小伟还是要验证一下到底算得对不对:

[从头学数学] 第79节 多边形的面积_第11张图片

嗯,计算的部分已经标出来了,看来还是大致不差的。




不过,这种方法毕竟是有误差的,比如下面这块面积,可以计算出正确结果是24。

[从头学数学] 第79节 多边形的面积_第12张图片

而下面这块就应该是33了。

[从头学数学] 第79节 多边形的面积_第13张图片


[从头学数学] 第79节 多边形的面积_第14张图片

[从头学数学] 第79节 多边形的面积_第15张图片


[从头学数学] 第79节 多边形的面积_第16张图片

[从头学数学] 第79节 多边形的面积_第17张图片

[从头学数学] 第79节 多边形的面积_第18张图片


做了这么多计算,小伟很高兴已经掌握了所有的面积计算方法。

本节到此结束,欲知后事如何,请看下回分解。

你可能感兴趣的:([从头学数学] 第79节 多边形的面积)