基本形状,多边形和三角系数
计算机越来越多地被用来解决几何问题。像点、线和多边形这样的几何对象是各种重要应用的基础,产生了一系列有趣的问题和算法。几何算法在物理对象建模、图形设计、医学和游戏开发的设计和分析系统中都很重要。与物理对象打交道的设计师具有几何直觉。然而,这是几何编程的一部分困难,因为你用铅笔做的某些“明显的”操作,例如找到两条线的交点,需要用计算机进行非平凡的编程才能正确地完成。几何算法领域的研究很有趣,因为它有很强的历史背景;几何是最受重视的经典数学课题,甚至在柏拉图学院的大门上方也有这样的铭文:“不懂几何的人不许入内。”
外科计算几何
几何问题出现在医疗物体的建模,人体组织结构,医学成像,甚至计算机辅助手术。下图是人类皮层的表面模型。
线条和点
大多数规模较大的几何程序依赖于二维空间中定义的简单几何对象。基本对象是一个点,我们认为它是一对整数——“坐标”是通常的笛卡尔坐标系(尽管其他系统是合理的)。直线就是两点之间最短的距离。然而,与线段相反,直线在两个方向上都是无限长的。这里我们只讨论平面内的直线。
表示
直线既可以表示为点,也可以表示为方程。每条线都可以用一对点来完全描述 而且 .它也可以用这种形式的方程来描述 ,在那里 这条线的斜率和 是 拦截: .
然而,垂直线是一个问题,因为它们不能被这样的方程描述,因为除零。这个方程 控件之间的垂直线 -轴在点上 .这个问题可以通过使用更通用的公式来避免
因此,我们可以设想直线的两种可能的表示:点表示或点表示 上面的方程表示。让我们从表示代码中的一个点开始:
1 2 3 4 5 6 7 8 9 |
|
我们可以继续制定一个两点直线的表示法:
1 2 3 4 5 6 7 8 9 |
|
我们还可以轻松实现a, b, c的形式。我们称这门课为么
:
1 2 3 4 5 6 7 8 9 |
|
这些方程和点的形式可以使用如下的函数相互转换:
1 2 3 4 5 6 7 8 9 |
|
多边形
多边形是由不相交线段组成的闭合链的一组点。闭合的意思是,链的第一个顶点也是最后一个顶点。“不相交”意味着对线段只在它们的端点接触。
多边形对于描述平面上的大多数形状是必不可少的。我们可以使用line类将多边形表示为一组线。然而,这是没有必要的,因为它们可以很容易地表示为一组坐标点。我们可以假设存在一个段
而且
链上的点。因此,我们将其简单地实现为一个数组点
对象。
1 2 3 4 5 6 7 8 9 10 11 |
|
例如,我们可以把下面的三角形表示为
1 2 3>>>三角形=多边形([点(-1,3.),点(5,5),点(4,-2)))>>>打印(三角形)(-1,3.),(5,5),(4,-2)