最快的转换方式(移动,旋转,缩放)

时间:2010-07-08 00:16:03

标签: c++ c algorithm graphics vector

我正在看这个名为Creative Docs .Net的矢量绘图应用程序。我注意到我可以有数百种形状,移动,旋转和缩放根本不会滞后。鉴于必须修改所有顶点,应用程序通常如何尽快进行这些转换?

由于

3 个答案:

答案 0 :(得分:2)

一种典型的方法是在坐标上应用3x3(或3x2或2x3)仿射变换矩阵,可以描述位置,旋转,比例和剪切等。

如果您使用OpenGL或Direct3D,您可以使用图形硬件为您进行实际转换。

如果你在软件中这样做,rasteration可能会成为瓶颈,而不是转换顶点。

答案 1 :(得分:1)

除了使用矩阵来模仿仿射变换(带平移的线性变换)之外,您可能对使用Quaternions R 3 <中执行这些操作感兴趣/ SUP>

答案 2 :(得分:0)

通常,这是通过转换矩阵完成的。这样可以非常快速地转换各个点,这是大多数基于2D(和3D)矢量绘图的最常用技术。

特别是,该应用程序构建在Anti-Grain Geometry之上 - 一个相当高性能的开源2D渲染引擎。它提供了许多可用于此类应用的“原语”。