[英]How to rotate a Vector3 of dimensions by a Vector3 of angles?
我有一个向量 3,它表示每个轴上一块网格中有多少块。 例如,如果这些向量之一是 (1, 2, 1),它将在 x 轴上长 1 个块,在 y 轴上长 2 个块,在 z 轴上长一个块。 我还有一个角度向量 3,表示沿每个轴的旋转。 例如,如果这些向量之一是 (90, 180, 0),则该块将围绕 x 轴旋转 90 度,围绕 y 轴旋转 180 度,围绕 z 轴旋转 0 度。 我想不通的是如何通过其旋转角度矢量来旋转一块的尺寸,所以我知道它占据了空间中的哪些点。
public class Block
{
private Vector3 localOrientation;
private Vector3 dimensions;
public Vector3 GetRotatedDimensions()
{
//your implementation here
}
}
如果我理解正确,那么您的问题存在根本性错误。 不能有“旋转尺寸”。 让我们用一个矩形来演示这一点。 (我没有正确理解)
假设有这个初始矩形:
然后你旋转它。 这就是你得到的:
使用单个 Vector2,您无法区分“旋转的 x*y 矩形”和“初始 (x')*(y') 矩形”。 为了充分描述矩形的 position,您需要在块描述变量中保持大小和旋转。
x'
和y'
是你想知道的吗? 我对此表示怀疑。 哦,你会吗? 伟大的!
在 3 个维度中,我会将您要查找的内容定义为
The minimum dimensions of a rectangular box that
1. has its faces parallel to the XY, XZ and YZ planes and
2. contains another rectangular box of known dimensions and orientation.
可能有更优雅的解决方案,但我会像这样强行使用它:
不过,我不是 100% 确定这一点,所以请确保您验证结果!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.