2014-06-30 41 views
0

我需要按循環順序對一組向量進行排序。最簡單的方法是使用矢量與固定軸之間的角度。爲了得到角度,必須對矢量進行歸一化處理,其中包括執行昂貴的平方根計算。如何計算像兩個非單位向量之間的角度

由於我想避免成本,我不需要特定的角度 - 只是一些價值,給了我相同的順序 - 我想知道是否有一種方法來計算每個向量的值不需要要被歸一化的矢量併產生類似於角度的值(即,if angle(x) > angle(y) then f(x) > f(y))。

+0

我找到了一個解決方案[這裏](http://stackoverflow.com/questions/16542042/fastest-way-to-sort-vectors-by-angle-without-actually-computing-that-angle)。也許我問的方式值得保留這個問題? – wondering

回答

1

y分量與x分量的比值應足以對矢量進行排序而不對其進行歸一化。如果y:x比率較大,那麼角度會更陡峭。這至少可以用於第一象限(0到90度),但總體思路應該足以讓你開始。

+0

謝謝,但我將如何繼續角度> 90度?我不知道矢量的最大長度,所以如果矢量較長,第一象限中的值可能大於第二象限中的值。 – wondering

+0

對於不在第一象限(0-90度)的角度,其中一個或兩個組件都爲負值。所以根據哪些分量是負數,您可以計算出該象限在哪個向量,然後應用相同的觀察y:x比率的方法來確定順序。 – murtuza

相關問題