【发布时间】:2010-07-08 00:16:03
【问题描述】:
我正在查看这个名为 Creative Docs .Net 的矢量绘图应用程序。我注意到我可以有数百种形状,并且移动、旋转和缩放根本不会滞后。鉴于必须修改所有顶点,应用程序通常如何尽快完成这些转换?
谢谢
【问题讨论】:
标签: c++ c algorithm graphics vector
我正在查看这个名为 Creative Docs .Net 的矢量绘图应用程序。我注意到我可以有数百种形状,并且移动、旋转和缩放根本不会滞后。鉴于必须修改所有顶点,应用程序通常如何尽快完成这些转换?
谢谢
【问题讨论】:
标签: c++ c algorithm graphics vector
一种典型的方法是对坐标应用一个 3x3(或 3x2,或 2x3)仿射变换矩阵,它可以描述位置、旋转、缩放和剪切等内容。
如果您使用 OpenGL 或 Direct3D,您可以使用图形硬件为您进行实际的转换。
如果您在软件中执行此操作,则光栅化可能会成为瓶颈,而不是转换顶点。
【讨论】:
除了使用矩阵来模拟仿射变换(带平移的线性变换)之外,您可能对使用Quaternions 在R3中执行这些操作感兴趣>.
【讨论】:
通常这是通过转换矩阵完成的。这使得各个点可以相当快速地转换,并且是大多数基于 2D(和 3D)矢量的绘图使用的最常用技术。
该应用程序尤其是构建在 Anti-Grain Geometry 之上 - 一个相当高性能的开源 2D 渲染引擎。它提供了许多可用于此类应用程序的“原语”。
【讨论】: