透视投影到y / z平面上

时间:2013-12-23 22:54:28

标签: python-2.7 perspectivecamera

所以这个wikipedia page向您展示了如何在3d空间中将点投影到x / y平面上。有谁知道如何在y / z平面上做等效?这就是我现在正在做的事情(只是维基百科页面的内容。):

class Shape(object):
    ...
    def apply_perspective(self, camera_pos, orientation, viewer_pos):
        a, b, c = viewer_pos
        cx, cy, cz = map(cos, orientation)
        sx, sy, sz = map(sin, orientation)
        transformed_vertices = []
        append = transformed_vertices.append
        for v in self.vertices:
            x, y, z = v - camera_pos
            t1 = sz*y + cz*x
            t2 = cz*y - sz*x
            x_ = cy*t1 - sy*z
            t3 = cy*z + sy*t1
            y_ = sx*t3 + cx*t2
            z_ = cx*t3 - sx*t2
            t4 = c/z_
            newx = t4*x_ - a
            newy = t4*y_ - b
            append((newx, newy))
    return transformed_vertices

您可以在github repo中查看所有代码。特别是此文件中的文件是shapes.py。

1 个答案:

答案 0 :(得分:0)

我最终猜测结果是正确的。我使用了t4 = a/x_newx = t4*y_ - bnewy = t4*z_ - c;结果证明是正确的。我刚用代数!