菜单
  

    4    算法检验    19
    4.1多边形面积    19
    4.1.1 叉积求解法    19
    4.1.2 公式求解法    20
    4.3两线段交点    20
    4.4判断多边形是否为凸多边形    21
    总结    22
    致谢    23
    参考文献    24
    1    绪论
    1.1 背景
    发明家恩里科•迪尼(Enrico Dini)设计的一种神奇打印机——3D打印机(3D Printers),即快速成形技术的一种机器。这是一种以数学模型文件作为基础,运用粉末状金属或塑料等可粘合材料,通过逐层打印的方式来构造物体的技术。3D打印机不仅可以“打印”出一幢完整的建筑,甚至还可以在航天飞船中给宇航员打印任何所需的物品的形状。其打印过程简单说来,就是把数据和原料放进3D打印机中,机器就会按照程序把产品一层层造出来。最后打印出的产品,可以即时使用。过去其常在模具制造、工业设计等领域被用于制造模型,现正逐渐用于一些产品的直接制造,这意着这项技术正在普及。在本课题中我们主要研究计算几何在3D打印机中的应用。

    1.2 论文内容概要
    本文安排如下:
    第二节 主要对Python源代码中的多边形面积及向量夹角函数的理解和阅读,并对分析其涉及的计算几何知识。
    第三节 主要实现使用C语言完成Python源代码中的功能,并详述算法原理及所设计的程序。
    第四节 列举数据,代入程序中,得出的结果,与自己计算并结合作图的结果相比较,检验程序是否完成了所需要的功能。
    2    Python源代码解读
    本节主要结合计算几何知识分析Python源代码。
    2.1源代码部分函数解读
    2.1.1 计算多边形面积
    (1)def getAreaLoop(loop):
        areaLoopDouble = 0.0
        for pointIndex, point in enumerate(loop):
        pointEnd  = loop[(pointIndex + 1) % len(loop)]
        areaLoopDouble += point.real * pointEnd.imag - pointEnd.real * point.imag
        return 0.5 * areaLoopDouble
    'Get the area of a complex polygon.'
    分析:
    本段函数利用向量叉积公式:
    A=0.5*sum(xi*y(i+1)-x(i+1)*yi)(i=0-n-1逆时针排列>0))(即源代码中areaLoopDouble += point.real * pointEnd.imag - pointEnd.real * point.imag计算多边形面积,其中point.real,point.imag分别表示为起始向量的横坐标与纵坐标,pointEnd.real,pointEnd.imag分别表示末尾向量的横坐标与纵坐标,通过向量叉积公式计算得出2倍的多边形面积,最后乘以1/2即得多边形面积。

    (2)def getAreaLoopAbsolute(loop):
        return abs(getAreaLoop(loop))
    'Get the absolute area of a complex polygon.'
    分析:
    本段函数中,使用绝对值函数abs()将计算出来的多边形面积求绝对值。

    (3)def getAreaLoops(loops):
        areaLoops = 0.0
        for loop in loops:
        areaLoops += getAreaLoop(loop)
        return areaLoops
    'Get the area of a list of complex polygons.'
    分析:
    本段函数中,使用for循环语句,将计算出的多个多边形面积进行求和。

    2.1.2计算两个向量的夹角
    (1)def getAngleAroundZAxisDifference(subtractFromVec3, subtractVec3):
        subtractVectorMirror=complex(subtractVec3.x,-subtractVec3.y)
        differenceVector=getRoundZAxisByPlaneAngle(subtractVectorMirror, subtractFromVec3 )
        return math.atan2( differenceVector.y, differenceVector.x )
  1. 上一篇:二元函数的极值存在的判别方法
  2. 下一篇:分数阶微分方程在金融中的应用
  1. 浅析产品成本计算方法

  2. 几种常用随机变量模拟的实现

  3. 非欧几何的产生和发展

  4. 中考动态几何试题研究

  5. 融入几何直观的数学分析学习

  6. 线性递推关系数列极限的几种求法及其应用

  7. 几类分数阶积分不等式的研究

  8. 当代大学生慈善意识研究+文献综述

  9. 十二层带中心支撑钢结构...

  10. 酸性水汽提装置总汽提塔设计+CAD图纸

  11. 杂拟谷盗体内共生菌沃尔...

  12. 电站锅炉暖风器设计任务书

  13. 中考体育项目与体育教学合理结合的研究

  14. 乳业同业并购式全产业链...

  15. 河岸冲刷和泥沙淤积的监测国内外研究现状

  16. 大众媒体对公共政策制定的影响

  17. java+mysql车辆管理系统的设计+源代码

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回