p; 根据几何约束中所涉及的几何体的个数,还可以将几何形式的几何约束分为三类。一元约束:只涉及一个几何体的约束。这类几何约束很少见,例如线段的长度就是一个一元约束。
二元约束:涉及到两个几何体的约束,大多数的几何约束属于此类。
多元约束:涉及到两个以上的几何体的约束。例如三点共线,线段的长度相等,角度相等等。
代数形式的几何约束包括方程约束和不等式约束。
方程约束:指以方程的形式给出的几何约束。例如,三角形的面积等于圆的面积。
不等式约束:有时为了表示点在几何图形中的构造顺序时会用到,例如,A<B<C<A表示点A,B,C是以顺时针的顺序构造的。
以上的概念如果总结不出来,那么对于几何约束的求解基本上就是一知半解,或者说求出来也是不严谨的结果。这个就是基础理论的研究,很是花费时间但是没有什么经济效益。
用了一个多月的时间陈东风基于以上的基本概念,总结出几何约束求解的确切定义——给定一个几何体的集合O和一个关于集合O中的几何体之间的几何约束的集合C,那么二元组(O,C)也就是几何约束问题。
几何约束求解的定义清晰后,那么利用解析几何的知识,建立直角坐标系,将所有给定的几何约束转化成一系列表示几何约束的代数方程,方程中的变量表示几何体的独立参数,这样就将一个几何约束问题转化成一个非线性代数方程组的求解问题。然后,用数值计算的方法求解这个方程组,所得到的解就是几何体的位置坐标,即可以构造这个几何图形。这就是陈东风设想的基于数值计算的几何约束求解方法。
先把数值计算方法放到一边,正如唐昌宏对陈东风质疑,在实际过程中不肯能所有的约束条件都是完美的,总有欠约束或者过约束的时候。
要想提高几何约束求解的交互性和准确性必须要进行几何约束求解的定性分析——也就是欠、过和完整约束性的判定问题、参数有效范围的确定问题、多解问题、求解失败的诊断和误差的传播问题等。
陈东风要做的就是给出这样的一个欠/过约束的完整判定算法,然后在分别针对欠约束和过约束进行完善。
对于欠约束的几何约束求解问题,陈东风通过设置几何约束的优先级,给出了如何依据几何约束的优先级添加几何约束的方法,最后计算出了一个将欠约束的几何约束求解问题转化为完整约束的几何约束求解问题的算法。
对于过约束的几何约束求解问题,陈东风首先判定一个过约束的几何约束求解问题是一致性的还是非一致性的,进而针对两种不同类型,分别给出将其转化为完整约束的几何约束问题的方法,并提出了算法。
到了这一步才基本上算是完成了几何引擎中最为关键的几何约束算法,而这个时间也过去了4个月,已经到了1981年的3月份。