数学背后的Flash矢量图形

Math Behind Flash Vector Graphics?

本文关键字:图形 Flash 背后      更新时间:2023-10-16

我一直在寻找矢量图形和flash相当一段时间,但我还没有真正找到我在寻找什么。谁能确切地告诉我,在3D空间中构建矢量图像需要哪些数学领域?这只是矢量数学吗?我看到了一些c++库,但我不确定它是不是那种像flash图像那样用于较小文件大小的矢量。

如果你想从头开始做一些事情(如果你不想,有很多开源库),请记住,"矢量图形"(这与3D空间矢量的想法不同)本身通常基于参数化曲线,如Bezier曲线,它本质上是每个xy和/或z点的三次多项式,参数化值t从0到1。现在,通过uv坐标将你用这些曲线创建的纹理贴图图像(即所谓的"矢量图形"图像)投影到三角形多边形上将涉及一些插值,这是相当直接的线性代数,因为你将利用三角形多边形表面上3D点的质心坐标来计算你想要从纹理中查找的uv点。

步骤是:

  1. 创建基于参数曲线的图像(即"矢量图形")并从中制作纹理图
  2. 纹理贴图将有uv坐标
  3. 当您栅格化3D三角形多边形时,您将从三角形多边形的实际3D点获得三角形表面上的质心坐标。这些点的多边形也应该有UV坐标分配给他们。
  4. 使用质心坐标计算纹理贴图上的uv坐标。
  5. 当你从纹理贴图中获得该颜色时,然后为三角形阴影(即,如果你正在做的话,计算光照等,或者如果没有光照,则只是保存像素的颜色)。

请注意,我还没有进入抗锯齿,这是一个完全不同的野兽。如果你不知道你在做什么,最好的办法是通过超级采样来进行强力抗混叠(即,渲染一个非常大的图像,然后平均像素,将其缩小到所需的大小)。

如果你学过多变量微积分,应该熟悉参数曲线和曲面背后的概念,并且为了使用质心坐标和3D向量的线性插值,对线性代数的基本理解是必要的。