几何建模
从一个几何概念/问题到一个工作流程通常需要以下步骤:
几何(Geometry)->代数(Algebra)->算法(Algorithm)->程序(program)
由于计算机不理解几何,所以必须将几何问题转换为使用数字的代数问题,然后通过算法来操作这些数字,最后,基于这些算法开发程序。这里面的每一步都很难。
几何(Geometry)->代数(Algebra)
我们很容易想到几何的形状,如点或线,但是让计算机处理几何对象时,必须找到该几何对象的表示形式,将其以计算机能够运算的形式进行描述。例如三维空间中的点用三个数字表示,如(1.3,2.5,5.6),xy平面中的一条线的方程为:3x-5y+3=0。
几何对象的表示通常不是唯一的,圆可以用隐式方程表示:x^2 + y^2 = 1
或者使用三角函数以参数形式表示:
x = cos(t) x = cos(t)
y = sin(t) y = sin(t) 0度<=t<=360度
一些几何对象,例如多面体设置需要Complexdata结构来表示其所有细节,因此找到一个适当的表示(针对特定的应用程序)通常时一项非常具有挑战的任务,后面将会介绍一些复杂几何体的表示。有些是数学的(曲线和曲面),有些是组合的(多面体)。无论选择什么表示形式,都必须易于操作。
除了特定类型的几何对象的表示之外,还必须将几何运算转换为代数形式。请听题:给定一个半径为r的球体,如果球体的中心在曲线上移动,这个球体的轨迹是什么形状,显而易见是管子形状,但是这个管子具体是什么样子就不显而易见了如果曲线是一条线,则轨迹是一个圆柱体,如果曲线是一个圆,轨迹则是一个圆环体。
如果曲线并不是一条简单的曲线,或者在球体扫描时可以改变半径,几何表达较为简单,但是代数运算比较复杂。
代数(Algebra)->算法(Algorithm)
在找到几何对象的表示和几何运算的代数解释之后,下一步是找到用于处理几何的数学表示和方程的算法,例如找到两条位于xy平面的线,如果存在这样的线则找到它们的交点,这两条线可以表示为:
Ax + By + C = 0
Ux + Vy + W = 0
如果它们平行,即AV = BU,则没有交点,如果它们不平行可以通过联立两个变量的线性方程来找到交点。
不幸的是,其他实际问题并不是这么容易,比如活塞发动机和波音777等物体的几何对象表示是复杂的,方程数量也很多,通常是具有许多变量的非线性方程,在处理这些问题时我们可以选择:
1.符号计算(Symbolic Computation),比如求解二次方程Ax2 + Bx + C =0,符号系统会给出两个根方程。
root1 = (-B + SQRT(B2-4AC))/(2A)
root2 = (-B - SQRT(B2-4AC))/(2A)
因此答案是代数,而不是数字。
2.数值计算
本文来自博客园,作者:蹇爱黄,转载请注明原文链接:https://www.cnblogs.com/jianjiana/p/18798649