Matrix 变换二维图像以模拟三维平面上的三维投影

Matrix 变换二维图像以模拟三维平面上的三维投影,matrix,3d,svg,linear-algebra,projection,Matrix,3d,Svg,Linear Algebra,Projection,根据SVG规范,您可以对任何元素应用任意2x3转换矩阵 我想利用此方法对SVG中的图像应用3D透视投影,以模拟平面图像的3D投影 我使用javascript中的矩阵计算将三维模型空间坐标(x,y,z)的变换和投影应用到二维图像空间坐标(x',y')。但是为了将投影应用到SVG中的图像或文本,我需要将3D矩阵投影到2D变换矩阵 假设图像位于三维模型空间中的任意平面上,图像原点定义为平面上的三维点,如何将三维投影矩阵转换为SVG中图像的二维变换?从数学上讲,使用2x3变换进行三维透视投影是不可能的

根据SVG规范,您可以对任何元素应用任意2x3转换矩阵

我想利用此方法对SVG中的图像应用3D透视投影,以模拟平面图像的3D投影

我使用javascript中的矩阵计算将三维模型空间坐标(x,y,z)的变换和投影应用到二维图像空间坐标(x',y')。但是为了将投影应用到SVG中的图像或文本,我需要将3D矩阵投影到2D变换矩阵


假设图像位于三维模型空间中的任意平面上,图像原点定义为平面上的三维点,如何将三维投影矩阵转换为SVG中图像的二维变换?

从数学上讲,使用2x3变换进行三维透视投影是不可能的。这就是所谓的非仿射变换。这里有更多的信息:


当然,您可以使用javascript对原始数据进行这样的转换,并将结果显示为SVG图像,但您只能使用SVG显示生成的图形-您不能从SVG图像开始。

但是,由于图像本身位于场景中的一个平面上,我们不能线性地将z域的贡献投影到图像空间的x/y域吗?你可以。您不能使用2x3矩阵,您需要一个4x4矩阵,SVG本机只执行2x3矩阵变换。