这是任何一个几何建模系统在搭建之初都必须做的事情,对于CAD而言,这里有几项是需要特殊注意的:
1 任何一个基本量都必须有明确的几何
看似简单,实则很不容易,如果几何意义不明确很有可能会出现调用的混乱,例如OpenMesh中所有的三元量都被定义为vec3,这就造成后期计算的时候出现点坐标之间的内外积;再比如对于Matrix操作,在意义明确的状况下就很容易确定一些操作是无法进行的,可以省去很多麻烦,另外方向最好明确定义,这样在后期可以省去很多检查的麻烦。
2 归一化
在归一化中,如果向量的长不小于给定容差,一定要停止运算,直接抛出异常,不能认为三个分量本身差距不大就可以强行归一化,这不是归一化本身决定的,也不是容易造成计算的不稳定,而是容差体系决定的,后面的容差体系会详细介绍。
3 主次分明
这是对于可能出现冗余的定义,例如坐标系的定义,三个方向之间可能会存在冲突,则一定要首先明确主方向,也就是在冲突的时候一定要保证不能变的方向,另外就是是否支持左手坐标系的问题,建议支持,好处多多。
4 操作拆分
在基本几何量纲定义中,最好不要存在复合操作,或者在复合操作存在的同时能够保证所有的操作都可以进行拆分。这样是为了避免重复计算带来的效率损失,例如对于Matrix或者Transformation,最好不要存在直接对点/向量进行逆变换的API,这样的API存在很有可能会导致对一个集合直接使用,造成每一步都需要计算逆变换,可以提供逆变换的API,鼓励直接使用逆变换的矩阵来对几何元素进行变换。
总而言之,这部分开发的难度非常小,如何保证高效合理是关键,毕竟可能是后面开发用的最多的。