gpt4 book ai didi

Android Matrix.multiplyMV 没有通过翻译改变我的结果

转载 作者:搜寻专家 更新时间:2023-11-01 08:57:55 26 4
gpt4 key购买 nike

我正在尝试将一个坐标系中的一组点转换为我的 Android OpenGL 项目的另一个坐标系。

假设 matrix 是一个包含 16 个元素的 float 组。假设 points 是对每个包含 4 个元素的 float 组的引用。 (points = new float[8][4])

我将矩阵设置为单位矩阵,然后转换它并乘以游戏对象的旋转。然后,我尝试将 8 个顶点中的每一个都转换到新的矩阵坐标系中,但所有点都没有发生变化。

Matrix.setIdentityM(matrix, 0);
Matrix.translateM(matrix, 0, go.getPosition().getX(), go.getPosition().getY(), go.getPosition().getZ());
Matrix.multiplyMM(matrix, 0, matrix, 0, go.getRotationArray(), 0);
//Matrix.rotateM(matrix, 0, 30f, 1.5f, -5f, 0f); testing debug purpose

for(int i=0;i<8;i++)
{
Matrix.multiplyMV(points[i], 0, matrix, 0, points[i], 0);
}

我基本上是在尝试做 Android 的 2D Canvas 和 Matrix 'mapPoints' 所做的事情。

最佳答案

当你有一个向量时,你的 4 长向量的最后一个元素必须是 1 而不是 0!因此,没有翻译数据被正确乘以。 (好吧,它被正确地完成了,只是不是我想要的。)所以当 android.opengl.Matrix 要求一个四长的向量并且前三个元素代表你的 x,y,z 时,确保设置了第四个元素到 1!

关于Android Matrix.multiplyMV 没有通过翻译改变我的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17508744/

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