2013-11-04 49 views
0

我試圖實現簡單的反射精靈效果。想象一下從屏幕的一個角落到另一個角落的對角線。然後,精靈(或圖像)被旋轉一定的量並放置在對角線一側的某個位置。什麼是以編程方式旋轉將放置在屏幕反射側的精靈(或圖像)的另一個實例的數學公式?我很容易找出反射是垂直的還是水平的(簡單地翻轉圖像),並且我可以計算出產生的精靈放置在哪裏,但它似乎是一個完全不同的複雜程度,試圖確定合成精靈的角度。確定反射精靈(對角鏡像)的結果角度

任何建議或編程公式?我通常在三角學上發臭,並且找不到任何線索。同樣,反射線的角度也是已知的(或可以找到),原始精靈的角度也是可以的。我只想確定顯示時反射的精靈將如何旋轉。

回答

0

如果我理解你正確,那麼它應該像確保反射的精靈角度(相對於對角線)與原始精靈角度(對角線再次對角線)相同而是負的那樣簡單。

顯示此圖像中(在底部的原始精靈左側和右上的反射):

Reflecting about an angle

所以,如果你看的角度θ I1和θ R1,可以看到的是:
θ I1是原始圖像和所述對角線
θ R1之間的角度0是反射圖像與對角線之間的角度

這些角度是相等且相反的,即55°和-55°。


雖然在一般情況下這可能不足以讓您計算所需的旋轉,所以我會詳細介紹一下。基本上,就像我之前說過的那樣,反射的精靈和線之間的角度需要與原始精靈和線之間的角度相等並且相反。這與確保每個精靈和線之間的角度相對於公共參考方向的差異相等並相反是一樣的。

再看圖像,假定公共參考方向在右邊。只要你保持一致,你是否可以做出其他的事情並不重要。同時假設當精靈旋轉0°時,每個精靈上的綠色箭頭指向平行於參考方向。

因此,考慮到這一點,您可以看到線條的角度爲θ°35°(正向旋轉爲順時針)。

您還可以看到原始精靈θ I2的旋轉角度爲45°。

所以原始子畫面和所述線之間的夾角爲θ I2 - θ大號,它等於10°。

再次,每個精靈和線之間的角度需要相等和相反。那就是:

θ I2 - θ大號 = -1 *(θ R2 - θ大號

爲了找到所需反射精靈的旋轉,只是重新安排方程此:

θ R2 =2θ大號 - θ I2

中的值把爲θ大號和θ I2給出:

θ R2 = 2 * 35° - 45°= 25°


所以在這個例子中反射精靈的旋轉θ R2計算爲25°,您可以從圖像中看到正確的圖像。如果要仔細檢查雖然,請注意,在反射精靈和線路之間的角度差(θ R2 - θ大號)爲-10°,這是相等且相反於θ I2 - θ L。請記住在應用此旋轉之前翻轉反射的精靈(假設綠色箭頭是您翻轉的軸)。

+0

嗨,謝謝你的詳細回覆!我仍然試圖理解某些方面,但感覺我到了那裏。但是,如果原始對象逆時針旋轉或大於180°,似乎無法將結果或數學可視化。例如,假設您的示例中有一個三角形默認指向左側。然後旋轉-90度,使其朝上 - 例如http://i.imgur.com/qUEVSrM.png。如果我取2θL-θI2=(35 * 2) - ( - 90)= 160?或(35 * 2) - 270 = -200?在這種情況下,它不應該以某種方式出現在180'嗎?對不起,如果這聽起來啞巴。 – SharkVC

+0

我認爲這種情況沒問題。我認爲問題在於你可能使用了一個方形窗口,但是我的例子是矩形窗口的一般情況,所以你所描述的對角線的角度應該是45°而不是35°。如果你的對角線爲45°,那麼你得到2θL-θI2=(45 * 2) - ( - 90)= 180。(或者相當於(45 * 2) - 270 = -180)。 回覆,如果它仍然沒有爲你工作,但我希望我沒有,但我可能在某個地方犯了一個錯誤。 –