0

したがって、このウィキペディアのページでは、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で確認できます。特に、これが入っているファイルは shape.py です。

4

1 に答える 1

0

私は最終的に正しいことが判明した推測をしました。t4 = a/x_newx = t4*y_ - b、およびnewy = t4*z_ - c;を使用しました。これは正しいことが判明しました。代数を使いました!

于 2013-12-29T04:57:15.610 に答える