2011-09-26 63 views
1

假設您有2d物體,只需以15度爲增量旋轉中心,即可輕鬆將其分成15度旋轉。將3d角度分成相等數量

如果我想爲一個3d物體計算所有可能的角度,並且每個角度之間的距離相等,我將如何去做這件事。

雖然每個p * r * y都可以工作,但它會相當隨意,並且會有大量的重疊。我真的很喜歡四元數解決方案。

我正在爲我目前正在進行的一個視頻遊戲項目做這個工作,本質上是一個老式的飛行模擬遊戲,儘管3D在遊戲中被渲染爲2D精靈。我正在尋找一種簡單的方法,以等距間隔的角度(包括每個正交的角度)以程序方式渲染我的飛機模型的所有可能角度。

回答

2

有多種方法可以做到這一點;該解決方案並非根據所提供的信息來唯一地定義。還要注意,「所有可能的角度」這個短語是有誤導性的,因爲有無限的角度。然而,如果通過「3d角度」字面意思是solid-angle(以球面度單位爲單位),那麼platonic solids將把球體分成相等的立體角。 (從技術上講你想spherical polyhedra,但他們是「差不多」的意義一樣,我們可以採取一個多面體的解決方案和「放鬆」了。)

牢記你想「你的條件[包括]每個正交[角]「(即應該有觀點,其是相互垂直的一些三重峯),我們悲痛注意到只存在一個柏拉圖固體滿足這一點,即八面體:

enter image description here

不幸的是,這隻對應於正交視圖(只有那些視圖)。這將是無聊的,可能不是你想要的。然而,你可以做的是建立在這個解決方案之上,並細分八面體。這裏有兩種可能性:

  1. 對於八面體每一個面,你可以在那面(星狀它)的中心創建新的視圖。其結果將是每個在this 4-view origami合照(奇怪的是我能找到的最好的圖片)頂點的觀點。因此,除了正交角度之外,您還可以在每個軸之間獲得8個角度,格式爲(±1,±1,±1)。將視圖數量保持在可管理的大小。

  2. 如果您需要更多的意見,你可以這樣做構建網格球頂,除非你開始與一個八面體,而不是一個二十面體。在第一個例子中,我們細分各三角形面成subdivisive功率的「三角力量」,得到「2-頻率八面測地球」。

enter image description hereenter image description here *

* original link

算法:取每個相鄰頂點的算術平均值,以產生新的頂點。

這可能不完全劃分的角度,但它會相當接近。如果您想更加立體角的「平等」,看到了「3頻八面體測地球」的一個例子的鏈接。

算法:第一次近似,您可以通過使用矢量(A+2B)/3(或反之亦然)來對角度進行三等分。如果你還求極高的精度,而不是明確的計算公式,你可以使用固角公式爲四面體準確的測量,並在您的初始猜測,在那裏你慢慢擾亂折段朝向或遠離執行relaxation起源。

此外谷歌的搜索結果是有點數學密集,但你可以蒐集一些使用了equal area spherical polyhedra