剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第九层功法的修炼,
这次要修炼的目标是[多边形的面积]。
当然,这个工具还是很麻烦的,尤其对于很多很简单的小题,还不如口算来得快,但给小伟用正合适。





不过,小伟还是要验证一下到底算得对不对:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第九层功法的修炼,
这次要修炼的目标是[多边形的面积]。
正剧开始:
星历2016年02月10日 11:43:24, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究图形的面积。
[人叫板老师]这次提到的多边形主要有三个,分别是平行四边形,三角形和梯形。
为了能方便计算这些多边形的面积,阿伟做了一个小工具:
<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>
当然,这个工具还是很麻烦的,尤其对于很多很简单的小题,还不如口算来得快,但给小伟用正合适。
下面就可以来做题了:
<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>
<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>
<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>
<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>
小伟一向对于太过于简单的东西不感兴趣,但是,现在让小伟感兴趣的东西来了:
[人叫板老师]太有创意了,竟然让小伟估算叶子的面积,这个叶子算几边形呢?
但是这种问题也难不倒小伟,这不,很快就算出来了。
怎么算的呢?
<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>
不过,小伟还是要验证一下到底算得对不对:
嗯,计算的部分已经标出来了,看来还是大致不差的。
不过,这种方法毕竟是有误差的,比如下面这块面积,可以计算出正确结果是24。
而下面这块就应该是33了。
做了这么多计算,小伟很高兴已经掌握了所有的面积计算方法。
本节到此结束,欲知后事如何,请看下回分解。