实体的表示

点集拓扑表示

  • 有效物体(实体):具有一定形状,具有确定的封闭边界(表面),是一个内部连通的三维点集
    • 内点:点集中完全包含于该点集充分小邻域的点
    • 边界点
  • 正则运算 $r$:先对物体取内点再取闭包
    • 边界 $b$
    • 内点 $i$
  • 正则点集:$A=rA$
  • 实体的可计算性:对于一个占据空间的正则点集,如果其表面是二维流形,则该正则点集为实体
  • 正则集合运算 $A \text{ op}^*\ B=r(A \text{ op } B)$
    • 只需计算 $b(A\text{ op}^*\ B)$
    • $b(A\cap^* B)=(bA\cap iB)\cup(bB\cap iA)\cup(bA\cap bB)_{\text{same side}}$

形体表示

  • 形体信息
    • 集合信息:欧式空间中位置和大小
    • 拓扑信息:各分量数目及其互相间的连接关系
  • 习题表面:封闭,有向,非自交,有界,连续
  • 形体自身:刚性,三维一致性,表示有限性
  • 几何元素
    • 体:欧式空间中非空有界的封闭子集
    • 体素:能用有限个尺寸参数定义一个简单封闭空间
      • 长方体,圆柱体,球体,代数半空间,参数定义的截面旋转
    • 壳:在观察方向上所能看到的形体的最大外轮廓线
    • 面:有限非零的区域,有一个外环和若干个内环界定范围
    • 环:由有序有向边组成的封闭边界
      • 面上沿环前进,左侧面内
    • 边:两个邻面或多个邻面的交界
    • 点:不允许孤立点
  • 拓扑关系表示:相邻性,包含性

实体的造型

  • 多边形表面表示:用一组包围物体内部的表面多边形描述边界

    • 多边形边表表示:顶点表,边表,面表
    • 多边形平面方程:$Ax+By+Cz+D=0$
    • 多边形表面方向:从里向外以右手系逆时针方向选择 $V_1,V_2,V_3$,$N=(V_2-V_1)\times(V_3-V_1)$
  • 空间分割表示:实体被分割表示为互不相交的粘合在一起的体素

    • 空间位置枚举表示法:单一立方体
    • 八叉树表示法:每个结点为立方体,根据 Full, Partial, Empty 继续划分 Partial
    • 单元分解表示法:不同类型基本体素粘合
  • 扫掠几何/推移表示 (sweep representation)

    • 广义平移 sweep:允许二维区域大小变换,轨道可以不垂直与二维区域所在平面
    • 旋转 sweep
    • 广义 sweep:允许带推移物体在推移过程中任意变换
    • 正则集合运算困难
  • 边界表示:描述实体边界描述实体

    • 最简单:多边形表面表示
    • 半边数据结构:以边为核心
      • 将边表示成拓扑意义上相反的两条半边
      • 顶点 -> 半边 -> 环 -> 面 -> 多边形
    • 二维流形:每条边值严格属于两个多边形
    • 简单多面体:与球拓扑同构的多面体
      • 满足欧拉公式:$v-e+f=2$
    • 广义欧拉公式:$v-e+f-r=2(s-h)$
      • $r$:多面体上环的个数
      • $h$:贯穿多面体的洞的个数
      • $s$:相互分离的多面体数
    • 欧拉运算操作
      • m: 生成
      • k: 删除
    • 正则集合运算
      • 相交检测:预检查两个物体是否相交,包围盒技术
      • 交线计算
      • 表面分类
      • 结果表示
  • 构造实体几何表示 (CSG):将一些简单的基本体素通过正则集合运算构造和表示新实体

    • CSG 树:中间结点为正则集合运算,叶节点为基本体素
    • 不唯一,不便于输出显示,获取实体信息需要大量计算
  • 特征模型表示:用一组特征参数定义一簇类似的物体

特征 CSG 边界 sweep 空间分割
精确性 精确 依赖于基本体素种类 允许曲面则精确 允许曲面则精确 近似
唯一性 × × ×
表示域
封闭性 不能集合运算 封闭 不封闭 不封闭 封闭
有效性验证 自动保证 简单 简单 简单
简洁性 简洁 简洁 中等 简洁 大量空间
输入支持 面向用户 面向用户 自由度大,但需要大量几何数据 面向用户
输出支持 实体性质计算 边界信息 实体性质计算