[英]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.