我有3个函数,它们应该正确地执行三角形的旋转,但它没有。我的想法是,如果我想围绕它的中心旋转我的三角形,我应该将三角形原点转换为0,0,0, translateToOrigen
执行旋转,然后使用rotate
将三角形转换回其原始位置:
translateBacktoPosition
我调用void Triangle::rotate(float angle,glm::vec3 axis) {
translateToOrigen();
modelMatrix = glm::rotate(modelMatrix, glm::radians(angle), axis);
translateBacktoPosition();
}
void Triangle::translateToOrigen() {
modelMatrix = glm::translate(modelMatrix, -_origen);
}
void Triangle::translateBacktoPosition() {
modelMatrix = glm::translate(modelMatrix, _origen);
}
- 函数如下:
rotate
我如何理解这一点,这应该围绕z轴旋转我的三角形-90度。
但实际发生的是,我的三角形被拉伸而没有显示在正确的位置。
我已经测试了t1.rotate(-90.0f, glm::vec3(0, 0, 1));
和translateToOrigen()
并且它们工作得非常好,直到我尝试旋转。
我保存变量modelMatrix中的所有矩阵,当完成平移和旋转时,我通过均匀发送到着色器,我将此矩阵与我的顶点相乘。
我得不到我所缺少的东西。