gpt4 book ai didi

java /三角/数学。立方体在 3 个空间中的相对轴,处理库(错误?)

转载 作者:行者123 更新时间:2023-12-04 08:20:35 29 4
gpt4 key购买 nike

我有一个绕其 3 轴旋转的立方体,当 key[a] == true 时,它​​会向左旋转,就好像它正在滚动一样。将立方体向任何方向旋转 45 度,将其向后旋转 90 度,以获得继续的错觉。这将保持 3 个与环境成 < 45 度的轴
我相信这是正确的,但是立方体的 x 轴似乎是相对于环境的,而 y 和 z 是相对于立方体方向的,我在文档中找不到对此的引用,这是一个错误吗?
https://processing.org/reference/rotateY_.html
https://processing.org/reference/rotateX_.html

  if(keys[w]) { 
if (x >= 359) x = 0;
x = x + 1;
}
if(keys[a]) {
if (z >= 359) z = 0;
z = z + 1;
}
if(keys[s]) {
if (x <= 0) x = 359;
x = x - 1;
}
if(keys[d]) {
if (z <= 0) z = 359;
z = z - 1;
}

// return 90 deg for magic trick
if (x > 45 && x < 180) x = 270 + x;
if (x < 316 && x > 180) x = 360 - x;

if (y > 45 && y < 180) y = 270 + y;
if (y < 316 && y > 180) y = 360 - y;

最佳答案

矩阵变换不是 commutative .顺序很重要。矩阵运算如 rotate() 指定一个新矩阵并将当前矩阵乘以新矩阵。
因此,这样做是有区别的

rotateX(x);
rotateY(y);
rotateZ(z);
并这样做
rotateZ(z);
rotateY(y);
rotateX(x);

rotateX(x1 + x2);
rotateY(y1 + y2);
rotateZ(z1 + z2);
不是 一样
rotateX(x1);
rotateY(y1);
rotateZ(z1);
rotateX(x2);
rotateY(y2);
rotateZ(z2);

您的问题的一种可能解决方案是使用 Quaternions .四元数的行为不同于 Euler angles并且也没有 Gimbal lock问题。处理在幕后使用 OpenGL,不支持四元数。但是,四元数可以转换为矩阵,矩阵可以通过 applyMatrix() 应用.

关于 java /三角/数学。立方体在 3 个空间中的相对轴,处理库(错误?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65516364/

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