gpt4 book ai didi

c++ - 将 3D 变换转换为 2D

转载 作者:行者123 更新时间:2023-11-30 02:23:40 25 4
gpt4 key购买 nike

我正在尝试找出一种在 OpenGL 中将 3D 变换矩阵转换为 2D 的方法。我的 z 坐标被忽略(我正在处理地面投影)。

下面是我正在努力实现的一个例子:

// Given a transformation matrix
// | r00 r01 r01 t0 |
// | r10 r11 r11 t1 |
// | r20 r21 r21 t2 |
// | 0. 0. 0. 1. |
//
// Ignore the z-coordinate, and convert it to
// | r00 r01 t0 |
// | r10 r11 t1 |
// | 0. 0. 1. |
glm::dmat4 t_matrix_3D = GetTransformation();
glm::dmat3 t_matrix_2D = glm::dmat3(t_matrix_3D);
t_matrix_2D[2] = dvec3(dvec2(t_matrix_3D[3]), 1.);
t_matrix_2D[0][2] = 0.;
t_matrix_2D[1][2] = 0.;

问题是有没有更漂亮的方法呢?也许使用矩阵切片或子矩阵提取?

最佳答案

最容易理解也可能是性能最好的方法是编写内联方法或函数并直接使用 glm::mat3 的构造函数:

glm::mat3 Mat3Dto2D( const glm::mat4 & m )
{
return glm::mat3(
m[0][0], m[0][1], 0.0f,
m[1][0], m[1][1], 0.0f,
m[3][0], m[3][1], 1.0f
);
}

关于c++ - 将 3D 变换转换为 2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45848967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com