[从头学数学] 第278节 [计算几何] 多边形周长和面积

来源:互联网 发布:淘宝主页图片大全 编辑:程序博客网 时间:2024/04/30 07:40
剧情提要:
阿伟看到了一本比较有趣的书,是关于《计算几何》的,2008年由北清派出版。很好奇
它里面讲了些什么,就来看看啦。


正剧开始:
星历2016年09月26日 09:58:10, 银河系厄尔斯星球中华帝国江南行省。

[工程师阿伟]正在和[机器小伟]一起研究[计算几何]]。






<span style="font-size:18px;">#>>> 路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [1.33, 3], [2, 3], [6, 3], [6, 3.86], [3.33, 5], [6, 9]]各顶点内角: [11.2769, 180.0, 101.4755, 123.5245, 180.0, 90.0, 113.1208, 280.6023]周长: 21.556面积: [10.6061, 'anti-clockwise']路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [1.33, 3], [2, 3], [3.33, 5], [6, 3.86], [8, 3], [6, 9]]各顶点内角: [63.4349, 180.0, 101.4755, 123.5245, 123.6239, 259.4969, 180.1469, 48.2973]周长: 22.79面积: [17.4599, 'anti-clockwise']路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.5, 1.5], [1.78, 2.33], [2, 3], [3.33, 5], [6, 9]]各顶点内角: [11.2769, 180.0, 180.0, 90.0, 63.6418, 179.5362, 195.4459, 180.0992]周长: 19.399面积: [7.4925, 'anti-clockwise']路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.33, 3], [1.78, 2.33], [2, 3], [3.33, 5], [6, 9]]各顶点内角: [11.2769, 180.0, 180.0, 45.0, 236.113, 52.065, 195.4459, 180.0992]周长: 18.539面积: [6.21445, 'anti-clockwise']路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.33, 3], [2, 3], [6, 3], [6, 3.86], [6, 9]]各顶点内角: [45.0, 180.0, 180.0, 45.0, 180.0, 180.0, 90.0, 180.0]周长: 20.485面积: [18.0, 'anti-clockwise']路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.33, 3], [2, 3], [3.33, 5], [6, 3.86], [6, 9]]各顶点内角: [45.0, 180.0, 180.0, 45.0, 180.0, 123.6239, 259.4969, 66.8792]周长: 20.93面积: [12.8519, 'anti-clockwise']路径: [[6, 9], [2.4, 5.4], [3.33, 5], [2, 3], [6, 3], [6, -3], [8, -7], [8, 3], [6, 9]]各顶点内角: [63.4349, 68.2729, 280.351, 56.3761, 270.0, 153.4349, 26.5651, 161.5651]周长: 39.302面积: [36.404, 'anti-clockwise']路径: [[6, 9], [2.4, 5.4], [3.33, 5], [6, 3.86], [6, 3], [6, -3], [8, -7], [8, 3], [6, 9]]各顶点内角: [63.4349, 68.2729, 179.8479, 246.8792, 180.0, 153.4349, 26.5651, 161.5651]周长: 36.663面积: [31.2559, 'anti-clockwise']路径: [[6, 9], [2.4, 5.4], [-6, 9], [-0.37, 2.56], [0, 3], [1.33, 3], [2, 3], [3.33, 5], [6, 9]]各顶点内角: [11.2769, 248.1986, 25.6407, 81.2215, 229.9392, 180.0, 123.6239, 180.0992]周长: 32.57面积: [22.82, 'anti-clockwise']路径: [[6, 9], [3.33, 5], [2, 3], [1.78, 2.33], [3.67, -0.5], [4.29, 0.43], [6, 3], [6, 3.86], [6, 9]]各顶点内角: [33.7231, 179.9008, 164.5541, 128.0852, 67.4268, 179.9485, 146.3614, 180.0]周长: 21.524面积: [19.956, 'anti-clockwise']路径: [[6, 9], [3.33, 5], [2, 3], [6, 3], [6, -3], [5.67, -3.5], [8, -7], [8, 3], [6, 9]]各顶点内角: [52.1581, 179.9008, 56.3761, 270.0, 213.4248, 112.9229, 33.6523, 161.5651]周长: 38.339面积: [35.17, 'anti-clockwise']路径: [[6, 9], [3.33, 5], [2, 3], [6, 3], [6, -3], [8, -7], [8, 3], [6, 3.86], [6, 9]]各顶点内角: [33.7231, 179.9008, 56.3761, 270.0, 153.4349, 26.5651, 113.2677, 246.7323]周长: 39.0面积: [28.87, 'anti-clockwise']路径: [[6, 9], [3.33, 5], [2, 3], [6, 3], [4.5, 0], [6, -3], [8, -7], [8, 3], [6, 9]]各顶点内角: [52.1581, 179.9008, 56.3761, 296.56510000000003, 126.8699, 180.0, 26.5651, 161.5651]周长: 38.716面积: [38.51, 'anti-clockwise']路径: [[6, 9], [3.33, 5], [6, 3.86], [6, 3], [6, -3], [5.67, -3.5], [8, -7], [8, 3], [6, 9]]各顶点内角: [52.1581, 79.3977, 246.8792, 180.0, 213.4248, 112.9229, 33.6523, 161.5651]周长: 35.701面积: [30.0219, 'anti-clockwise']路径: [[6, 9], [3.33, 5], [6, 3.86], [6, 3], [4.5, 0], [6, -3], [8, -7], [8, 3], [6, 9]]各顶点内角: [52.1581, 79.3977, 246.8792, 206.5651, 126.8699, 180.0, 26.5651, 161.5651]周长: 36.077面积: [33.3619, 'anti-clockwise']路径: [[6, 9], [6, 3.86], [6, 3], [4.29, 0.43], [4.5, 0], [6, -3], [8, -7], [8, 3], [6, 9]]各顶点内角: [18.4349, 180.0, 213.6386, 120.3318, 179.4645, 180.0, 26.5651, 161.5651]周长: 33.716面积: [27.1375, 'anti-clockwise']路径: [[6, 9], [6, 3.86], [6, 3], [6, -3], [5.56, -3.33], [5.67, -3.5], [8, -7], [8, 3], [6, 9]]各顶点内角: [18.4349, 180.0, 180.0, 233.1301, 93.9647, 179.253, 33.6523, 161.5651]周长: 33.282面积: [23.21555, 'anti-clockwise']路径: [[6, 9], [6, 3.86], [6, 3], [6, -3], [5.67, -3.5], [5.35, -3.97], [8, -7], [8, 3], [6, 9]]各顶点内角: [18.4349, 180.0, 180.0, 213.4248, 180.8242, 104.5784, 41.1725, 161.5651]周长: 33.518面积: [24.26755, 'anti-clockwise']路径: [[6, 9], [6, 3.86], [6, 3], [4.5, 0], [6, -3], [5.67, -3.5], [8, -7], [8, 3], [6, 9]]各顶点内角: [18.4349, 180.0, 206.5651, 126.8699, 239.9899, 112.9229, 33.6523, 161.5651]周长: 33.836面积: [27.66, 'anti-clockwise']路径: [[6, 9], [6, 3.86], [6, 3], [4.5, 0], [4, -1], [6, -3], [8, -7], [8, 3], [6, 9]]各顶点内角: [18.4349, 180.0, 206.5651, 180.0, 108.4349, 198.4349, 26.5651, 161.5651]周长: 34.097面积: [28.0, 'anti-clockwise']操作用时:1.060e+00 s>>>     #面积计算    def areaCalc(self):        S = [];        len_ = self.vertNum;        vert = self.getVertexValue();        for i in range(len_):            y = vert[i][1];            dx = vert[(i-1)%len_][0]-vert[(i+1)%len_][0];            S.append(0.5*y*dx);                    area = round(sum(S), 6);        if area < 0:            return [abs(area), 'clockwise'];        else:            return [area, 'anti-clockwise'];    #周长计算    def perimeterCalc(self):        L = 0;        len_ = self.vertNum;        vert = self.getVertexValue();        for i in range(len_):            x0, y0, x1, y1 = vert[i][0], vert[i][1], \                             vert[(i+1)%len_][0], vert[(i+1)%len_][1];            L += ((x1-x0)**2+(y1-y0)**2)**0.5;        return round(L, 3);def tmp4():    path = [[[6, 9], [2.4, 5.4], [0.8, 3.8], [1.33, 3], [2, 3], [6, 3], [6, 3.86], [3.33, 5], [6, 9]], [[6, 9], [2.4, 5.4], [0.8, 3.8], [1.33, 3], [2, 3], [3.33, 5], [6, 3.86], [8, 3], [6, 9]], [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.5, 1.5], [1.78, 2.33], [2, 3], [3.33, 5], [6, 9]], [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.33, 3], [1.78, 2.33], [2, 3], [3.33, 5], [6, 9]], [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.33, 3], [2, 3], [6, 3], [6, 3.86], [6, 9]], [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.33, 3], [2, 3], [3.33, 5], [6, 3.86], [6, 9]], [[6, 9], [2.4, 5.4], [3.33, 5], [2, 3], [6, 3], [6, -3], [8, -7], [8, 3], [6, 9]], [[6, 9], [2.4, 5.4], [3.33, 5], [6, 3.86], [6, 3], [6, -3], [8, -7], [8, 3], [6, 9]], [[6, 9], [2.4, 5.4], [-6, 9], [-0.37, 2.56], [0, 3], [1.33, 3], [2, 3], [3.33, 5], [6, 9]], [[6, 9], [3.33, 5], [2, 3], [1.78, 2.33], [3.67, -0.5], [4.29, 0.43], [6, 3], [6, 3.86], [6, 9]], [[6, 9], [3.33, 5], [2, 3], [6, 3], [6, -3], [5.67, -3.5], [8, -7], [8, 3], [6, 9]], [[6, 9], [3.33, 5], [2, 3], [6, 3], [6, -3], [8, -7], [8, 3], [6, 3.86], [6, 9]], [[6, 9], [3.33, 5], [2, 3], [6, 3], [4.5, 0], [6, -3], [8, -7], [8, 3], [6, 9]], [[6, 9], [3.33, 5], [6, 3.86], [6, 3], [6, -3], [5.67, -3.5], [8, -7], [8, 3], [6, 9]], [[6, 9], [3.33, 5], [6, 3.86], [6, 3], [4.5, 0], [6, -3], [8, -7], [8, 3], [6, 9]], [[6, 9], [6, 3.86], [6, 3], [4.29, 0.43], [4.5, 0], [6, -3], [8, -7], [8, 3], [6, 9]], [[6, 9], [6, 3.86], [6, 3], [6, -3], [5.56, -3.33], [5.67, -3.5], [8, -7], [8, 3], [6, 9]], [[6, 9], [6, 3.86], [6, 3], [6, -3], [5.67, -3.5], [5.35, -3.97], [8, -7], [8, 3], [6, 9]], [[6, 9], [6, 3.86], [6, 3], [4.5, 0], [6, -3], [5.67, -3.5], [8, -7], [8, 3], [6, 9]], [[6, 9], [6, 3.86], [6, 3], [4.5, 0], [4, -1], [6, -3], [8, -7], [8, 3], [6, 9]]]    len_path = len(path);    centerArray = [];    concaveArray = [];    #计时开始    startTime = time.clock();        for i in range(len_path):        path_ = path[i];        len_path_ = len(path_);        poly = Polygon(path_);        #生成顶点树        poly.genVertexTree();        #设置顶点凹凸性的属性        poly.setConcave();        #设置顶点的角度        poly.setAngle();        t = poly.getVertexTree();        angle = [];        for j in range(len_path_-1):            angle.append(t.find(Vertex(Point(path_[j]))).getVal().getAngle());        print('路径:', path[i]);        print('各顶点内角:', angle);                print('周长:',poly.perimeterCalc());        print('面积:', poly.areaCalc());        print('\n');    #计时结束    endTime = time.clock();    #打印结果    print('操作用时:{0:.3e} s'.format(endTime-startTime));#</span>



路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [1.33, 3], [2, 3], [6, 3], [6, 3.86], [3.33, 5], [6, 9]]
各顶点内角: [11.2769, 180.0, 101.4755, 123.5245, 180.0, 90.0, 113.1208, 280.6023]
周长: 21.556
面积: [10.6061, 'anti-clockwise']



路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [1.33, 3], [2, 3], [3.33, 5], [6, 3.86], [8, 3], [6, 9]]
各顶点内角: [63.4349, 180.0, 101.4755, 123.5245, 123.6239, 259.4969, 180.1469, 48.2973]
周长: 22.79
面积: [17.4599, 'anti-clockwise']



路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.5, 1.5], [1.78, 2.33], [2, 3], [3.33, 5], [6, 9]]
各顶点内角: [11.2769, 180.0, 180.0, 90.0, 63.6418, 179.5362, 195.4459, 180.0992]
周长: 19.399
面积: [7.4925, 'anti-clockwise']



路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.33, 3], [1.78, 2.33], [2, 3], [3.33, 5], [6, 9]]
各顶点内角: [11.2769, 180.0, 180.0, 45.0, 236.113, 52.065, 195.4459, 180.0992]
周长: 18.539
面积: [6.21445, 'anti-clockwise']



路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.33, 3], [2, 3], [6, 3], [6, 3.86], [6, 9]]
各顶点内角: [45.0, 180.0, 180.0, 45.0, 180.0, 180.0, 90.0, 180.0]
周长: 20.485
面积: [18.0, 'anti-clockwise']



路径: [[6, 9], [2.4, 5.4], [0.8, 3.8], [0, 3], [1.33, 3], [2, 3], [3.33, 5], [6, 3.86], [6, 9]]
各顶点内角: [45.0, 180.0, 180.0, 45.0, 180.0, 123.6239, 259.4969, 66.8792]
周长: 20.93
面积: [12.8519, 'anti-clockwise']



路径: [[6, 9], [2.4, 5.4], [3.33, 5], [2, 3], [6, 3], [6, -3], [8, -7], [8, 3], [6, 9]]
各顶点内角: [63.4349, 68.2729, 280.351, 56.3761, 270.0, 153.4349, 26.5651, 161.5651]
周长: 39.302
面积: [36.404, 'anti-clockwise']



路径: [[6, 9], [2.4, 5.4], [3.33, 5], [6, 3.86], [6, 3], [6, -3], [8, -7], [8, 3], [6, 9]]
各顶点内角: [63.4349, 68.2729, 179.8479, 246.8792, 180.0, 153.4349, 26.5651, 161.5651]
周长: 36.663
面积: [31.2559, 'anti-clockwise']



路径: [[6, 9], [2.4, 5.4], [-6, 9], [-0.37, 2.56], [0, 3], [1.33, 3], [2, 3], [3.33, 5], [6, 9]]
各顶点内角: [11.2769, 248.1986, 25.6407, 81.2215, 229.9392, 180.0, 123.6239, 180.0992]
周长: 32.57
面积: [22.82, 'anti-clockwise']



路径: [[6, 9], [3.33, 5], [2, 3], [1.78, 2.33], [3.67, -0.5], [4.29, 0.43], [6, 3], [6, 3.86], [6, 9]]
各顶点内角: [33.7231, 179.9008, 164.5541, 128.0852, 67.4268, 179.9485, 146.3614, 180.0]
周长: 21.524
面积: [19.956, 'anti-clockwise']



路径: [[6, 9], [3.33, 5], [2, 3], [6, 3], [6, -3], [5.67, -3.5], [8, -7], [8, 3], [6, 9]]
各顶点内角: [52.1581, 179.9008, 56.3761, 270.0, 213.4248, 112.9229, 33.6523, 161.5651]
周长: 38.339
面积: [35.17, 'anti-clockwise']



路径: [[6, 9], [3.33, 5], [2, 3], [6, 3], [6, -3], [8, -7], [8, 3], [6, 3.86], [6, 9]]
各顶点内角: [33.7231, 179.9008, 56.3761, 270.0, 153.4349, 26.5651, 113.2677, 246.7323]
周长: 39.0
面积: [28.87, 'anti-clockwise']



路径: [[6, 9], [3.33, 5], [2, 3], [6, 3], [4.5, 0], [6, -3], [8, -7], [8, 3], [6, 9]]
各顶点内角: [52.1581, 179.9008, 56.3761, 296.56510000000003, 126.8699, 180.0, 26.5651, 161.5651]
周长: 38.716
面积: [38.51, 'anti-clockwise']



路径: [[6, 9], [3.33, 5], [6, 3.86], [6, 3], [6, -3], [5.67, -3.5], [8, -7], [8, 3], [6, 9]]
各顶点内角: [52.1581, 79.3977, 246.8792, 180.0, 213.4248, 112.9229, 33.6523, 161.5651]
周长: 35.701
面积: [30.0219, 'anti-clockwise']



路径: [[6, 9], [3.33, 5], [6, 3.86], [6, 3], [4.5, 0], [6, -3], [8, -7], [8, 3], [6, 9]]
各顶点内角: [52.1581, 79.3977, 246.8792, 206.5651, 126.8699, 180.0, 26.5651, 161.5651]
周长: 36.077
面积: [33.3619, 'anti-clockwise']



路径: [[6, 9], [6, 3.86], [6, 3], [4.29, 0.43], [4.5, 0], [6, -3], [8, -7], [8, 3], [6, 9]]
各顶点内角: [18.4349, 180.0, 213.6386, 120.3318, 179.4645, 180.0, 26.5651, 161.5651]
周长: 33.716
面积: [27.1375, 'anti-clockwise']



路径: [[6, 9], [6, 3.86], [6, 3], [6, -3], [5.56, -3.33], [5.67, -3.5], [8, -7], [8, 3], [6, 9]]
各顶点内角: [18.4349, 180.0, 180.0, 233.1301, 93.9647, 179.253, 33.6523, 161.5651]
周长: 33.282
面积: [23.21555, 'anti-clockwise']



路径: [[6, 9], [6, 3.86], [6, 3], [6, -3], [5.67, -3.5], [5.35, -3.97], [8, -7], [8, 3], [6, 9]]
各顶点内角: [18.4349, 180.0, 180.0, 213.4248, 180.8242, 104.5784, 41.1725, 161.5651]
周长: 33.518
面积: [24.26755, 'anti-clockwise']



路径: [[6, 9], [6, 3.86], [6, 3], [4.5, 0], [6, -3], [5.67, -3.5], [8, -7], [8, 3], [6, 9]]
各顶点内角: [18.4349, 180.0, 206.5651, 126.8699, 239.9899, 112.9229, 33.6523, 161.5651]
周长: 33.836
面积: [27.66, 'anti-clockwise']



路径: [[6, 9], [6, 3.86], [6, 3], [4.5, 0], [4, -1], [6, -3], [8, -7], [8, 3], [6, 9]]
各顶点内角: [18.4349, 180.0, 206.5651, 180.0, 108.4349, 198.4349, 26.5651, 161.5651]
周长: 34.097
面积: [28.0, 'anti-clockwise']


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


0 0
原创粉丝点击