基本形状,多边形,三角学
计算机正在使用越来越多的方式来解决几何问题。几何对象,如点,线条和多边形是广泛的重要应用的基础,产生了一个有趣的问题和算法。几何算法在设计和分析系统中很重要,建模物理对象,图形设计,医学和游戏开发。使用物理对象的设计者具有几何直觉。然而,这是几何节目难以与铅笔的某些“明显”操作的一部分,例如查找两条线的交叉点,需要与计算机正确地执行非琐碎的编程。由于其强烈的历史背景,几何算法的领域很有意思地研究;几何是经典数学主题最有价值的。甚至在柏拉图学院的网关上面看起来铭文“让没有人在这里进入几何。”
手术中的计算几何形状:
线条和点
大多数较大刻度几何程序都依赖于在二维空间中定义的简单几何对象。基本对象是一个点,我们认为是一对整数 - “坐标”是通常的笛卡尔(即使其他系统是合理的)。线段仅是任何两点之间的最短距离。然而,两个方向上的线条长度与线段相反。在这里,我们只讨论限于飞机的线条。
表示:
线可以表示为点或方程。每一行可以完全由一对点完全描述 和 。它也可以通过形式的等式描述 , 在哪里 是线的斜率,即 , 和 是个 -Intercept。
然而,垂直线是一个问题,因为由于分割零划分,因此不能通过这样的等式来描述它们。方程式 代表一个穿过的垂直线 - 这一点 。使用更通用的公式可以避免这个问题
因此,我们可以设想两个可能的线条:点表示或 上面的等式表示。让我们首先代表代码中的一个点:
1 2 3 4 5 6 7 8 9 |
|
我们可以继续制定一个两点一行的表示:
1 2 3 4 5 6 7 8 9 |
|
我们也可以轻松实现A,B,C形式。让我们打电话给这堂课LINE2.
:
1 2 3 4 5 6 7 8 9 |
|
这些方程式和点形式可以使用如下面的函数相互转换:
1 2 3 4 5 6 7 8 9 |
|
多边形
多边形是一组角度,形成封闭的非交叉线段链。通过关闭,我们的意思是链条的第一个顶点也是最后一个。“非交叉”表示仅在其端点触摸段对。
多边形对于描述平面中的大多数形状至关重要。我们可以代表多边形作为使用我们的线类的一组线条。然而,这不是必要的,因为它们可以很容易地表示为一组坐标点。然后我们可以假设存在段
和
链中的点。因此,我们只实施它只是一系列观点
对象。
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的)
欧几里德最短路径
欧几里德最短路径问题是计算几何问题中的问题:给定欧几里德空间中的一组多面体障碍物,以及两点,找到不与任何障碍物相交的点之间的最短路径。
我们有一个开始位置 和一个目标位置 ,我们假设在自由空间。我们的目标是计算一个最短的碰撞路径 到 ,也就是说,不与任何障碍物内部相交的最短路径。请注意,我们不能说最短的路径,因为它不需要是唯一的。对于存在的最短路径,重要的是障碍是开放的;如果它们被关闭,则不存在最短路径,因为它始终可以通过更接近障碍物来缩短路径。
这不一定是短路径,因为某些弧在距离远处的节点之间,而其他弧在彼此接近的节点之间。一种N.obvious improvement would be to give each arc a weight corresponding to the Euclidean length of the segment connecting its incident nodes, and to use a graph search algorithm that finds a shortest path in a weighted graph, such as Dijkstra’s algorithm or propagating a wavefront from one of the points until it meets the other. Although this may improve the path length, we still do not get the shortest path. For now we will discuss Dijkstra's algorithm on a visibility graph.
在三个(更高的)尺寸中,问题在一般情况下是NP - 硬,但是存在有效的近似算法,其基于在障碍物边缘上找到合适的点样本并执行可见性图计算的概念来实现多项式时间。使用这些样本点。
可见性图 那 ,并且障碍物是顶点的图形 那 ,以及障碍物顶点和顶点 和 如果是边缘 和 是相互可见的或者如果 是一些障碍的边缘。从上面的提出,可以通过首先计算可见性图并将每个边缘用其欧几里德长度标记每个边缘来计算最短路径,然后通过表示Dijkstra的算法来计算最短路径。请注意,可见性图形不是平面,因此可能包括 边缘。
dijkstra(g,start)找到了所有最短的路径 在图中的彼此顶点,而ShortestPath(G,Li,LF)使用Dijkstra找到最短的路径 到 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 21 22 32 32 32 32 32 32 32 32 32 42 42 42 43 44 |
|