📜  计算机图形学中的细分

📅  最后修改于: 2021-04-17 02:55:55             🧑  作者: Mango

要查看具有各种属性的整个图像或部分图像,由于显示文件的现有结构无法满足我们查看图像的要求,因此我们需要以特定的方式来组织图像信息。为了实现此显示,文件被划分为Segments 。每个段对应一个组件,并与一组属性和图像转换参数(例如缩放,旋转)相关联。细分的存在允许:

  • 图片的细分。
  • 图片的特定部分的可视化。
  • 图片缩放,旋转和平移。

细分类型:

  • 发布的细分:将细分的visible属性设置为1时,称为发布的细分。这包括在活动细分列表中。
  • 未发布的细分:当细分的可见属性设置为0时,称为未发布的细分。这不包括在活动细分列表中。

分割显示的功能:

  1. 线段创建:必须在没有其他线段打开的情况下创建或打开线段,因为两个线段不能同时打开,因为很难将绘图指令分配给特定的线段。必须为创建的段指定一个名称以标识该段,该段必须是有效段,并且不应有相同名称的段。此后,我们在段表下以段名初始化项目,并将该段的第一条指令分配给显示文件中的下一个空闲存储,并将段的属性初始化为默认值。
    算法 :
    1. 如果有任何段处于打开状态,则给出错误消息: “段仍处于打开状态”,然后转到步骤8。
    2. 读取新细分的名称。
    3. 如果段名称无效,则给出错误消息: “段名称不是有效名称”,然后转到步骤8。
    4. 如果给定的段名称已经存在,则给出错误消息: “段名称在名称列表中已经存在”,然后转到步骤8。
    5. 将显示文件中的下一个可用存储区作为新段的开始。
    6. 将新段的大小初始化为0,并将其所有属性初始化为其默认值。
    7. 通知新细分现已打开。
    8. 停止。
  2. 关闭句段:完成所有显示文件指令的输入后,需要关闭该句段并为其重命名,这可以通过将当前打开的句段的名称更改为0来完成。现在,名称为0的句段已打开,即未命名的段已打开,如果显示文件中存在两个未命名的段,则需要删除一个。
    算法 :
    1. 如果没有打开任何段,请给出错误消息: “现在没有打开任何段”,然后转到步骤6。
    2. 将当前打开的段的名称更改为任何未命名的段,例如0。
    3. 删除可能已保存的任何其他未命名段指令,并在没有指令的情况下在未命名段上方初始化。
    4. 使下一个可用存储区在显示文件中可用,作为未命名段的开始。
    5. 将未命名段的大小初始化为0。
    6. 停止。
  3. 删除段:要从显示文件中删除特定段,我们必须删除该段而不破坏或重新格式化整个显示并恢复该段所占用的空间。将此空间用于其他段。实现此目的的方法取决于用于表示显示文件的数据结构。如果是数组,则通过向上移动其后的所有段来填充已删除段所留下的间隙。

    算法 :

    1. 读取要删除的段的名称。
    2. 如果段名称无效,则给出错误消息: “段名称不是有效名称”,然后转到步骤8。
    3. 如果该段是打开的,则给出错误消息: “无法删除一个打开的段”,然后转到步骤8。
    4. 如果段的大小小于0,则不需要处理,然后转到步骤8。
    5. 跟随已删除段的段将按其大小移动。
    6. 通过重置下一条空闲指令的索引来恢复已删除的空间。
    7. 通过从中减去已删除段的大小,可以调整移位段的起始位置。
    8. 停止。
  4. 重命名段:这样做是为了实现双缓冲,即存储两个图像的想法,一个图像显示,另一个图像创建,更改和动画。
    算法 :
    1. 如果旧段名和新段名均无效,则给出错误消息: “段名不是有效名称”,然后转到步骤6。
    2. 如果打开了两个段中的任何一个,则给出错误消息: “段仍处于打开状态”,然后转到步骤6。
    3. 如果给定的新段名称已存在于显示列表中,则给出错误消息: “段名称已存在”,然后转到步骤6。
    4. 旧的细分表条目将复制到新位置。
    5. 删除旧段。
    6. 停止。

使用分段显示的优点:

  • 分段允许以子图片结构组织显示文件。
  • 它允许将不同的属性集应用于图像的不同部分。
  • 通过更改/替换分段,可以更轻松地显示图片。
  • 它允许将变换应用于图像的选择性部分。