小编joo*_*jaa的帖子

图形编程中的矩阵乘法阶 PVM 与 MVP

嗨,我想知道为什么大多数教程和编程代码使用 MVP 来描述模型-视图-投影矩阵。而不是 PVM 这是代码中的实际实现顺序:

mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix;
gl_Position = MVP * VertexInModelSpace;
Run Code Online (Sandbox Code Playgroud)

对我来说,编写 PVM 而不是 MVP 似乎更容易理解。

math 3d matrix

5
推荐指数
1
解决办法
3725
查看次数

Python win32com和2维数组

当使用python和win32com自动化软件形式时,Adobe遇到了传递2d坐标数组的问题.如果看一下Adobe为visual basic(VB)提供的代码就很简单了.在Illustrator中绘制线条的简化示例如下所示:

Set appObj = CreateObject("Illustrator.Application")
Set docObj = appObj.Documents.Add

Set pathItem = docObj.PathItems.Add
    pathItem.SetEntirePath Array(Array(0.0, 0.0), Array(20.0, 20.0))
Run Code Online (Sandbox Code Playgroud)

现在天真的假设是VB代码可以通过如下转换成python:

from win32com.client import Dispatch

appObj = Dispatch("Illustrator.Application")  
docObj = appObj.Documents.Add()

pathItem = docObj.PathItems.Add()
pathItem.SetEntirePath( [ [0.0,0.0], [20.0,20.0] ] )
Run Code Online (Sandbox Code Playgroud)

显然,这并不容易,python发出错误说"只支持维度为1的数组".现在我知道阵列数组和二维数组之间存在差异.所以问题是我如何强制python制作一个正确的数组呢?

我尝试制作自己的VARIANT类型,但失败了.我也看过这个问题.任何人都有同样的问题,可以解决一些问题吗?

PS:

我知道使用以下方法可以避免这个问题:

pathItem = docObj.PathItems.Add()
for point in (  [0.0,0.0], [20.0,20.0] ):
    pp = pathItem.PathPoints.Add() 
    pp.Anchor = point
Run Code Online (Sandbox Code Playgroud)

但是有类似的情况,这实际上并不起作用.无论如何,重点是编写关于移植给学生的指导方针,以便更接近原始意图.

python coordinates multidimensional-array win32com

3
推荐指数
1
解决办法
2667
查看次数