2010-10-31 47 views
1

此問題的一個圖形是在這裏:橢圓擬合tangentally到行修飾一個軸

http://dl.dropbox.com/u/13390614/Question.jpg

採取對準橢圓具有固定 短軸的軸線,並沿 其長軸伸展橢圓直到它變爲一條線段(圖形中的A) 。

點(P)的正切值爲 的座標是什麼,或者長軸長度是多少?

我知道如何calc下長軸,如果我有 的tangental點,並能calc下點 如果我有長軸,但既沒有, 我很爲難

我也解決了這個時候短軸是 隨主要延伸,保持 的比例。問題是當一個軸是固定的 。

任何見解,將不勝感激,特別是 via trig。

加里

+0

這個問題是如何與C++相關的?我會說它只是數學.. – flownt 2010-10-31 22:09:04

回答

2

考慮

x^2/max^2 + y^2/fix^2 = 1; % ellipse 
Ax + By + C = 0;   % segment line 

然後

x^2/max^2 + (Ax + C)^2/(B*fix)^2 = 1; // Quadratic equation 

你的解決方案是,當判別是等於0

x^2 (1/max^2 + A^2/(B*fix)^2) 
+ x  2 AC/(B*fix)^2 
+  C^2/(B*fix)^2 - 1 
= 0 

a = (1/max^2 + A^2/(B*fix)^2); 
b = 2 AC/(B*fix)^2; 
c = C^2/(B*fix)^2 - 1. 

b^2 = 4ac ==> a = b^2/c ==> 
a = 4(AC)^2/(B*fix)^4/(C^2/(B*fix)^2 - 1) 
1/max^2 = 4(AC)^2/(B*fix)^4/(C^2/(B*fix)^2 - 1) - A^2/(B*fix)^2); 
0

點P具有的y座標r^2/h,wh ere r是橢圓的半短軸(所以這裏r = 0.75),h是你的線段的延伸線與y軸相交的點的y座標(稱爲H點)。

這是爲什麼?那麼,假設我們知道正確的橢圓和點P是什麼,現在執行仿射變換(x,y) - >(kx,y),其中選擇k以便橢圓變成圓。這不會移動H,因爲H在y軸上,並且它將P移動到具有相同y座標的點P',使得HP'是從H到半徑r的圓的切線段。通過類似的直角三角形,P'(並且因此P)具有y座標r^2/h。

當然可能會出現P不是位於原始段上,而只是它對一條線的延伸,或者垂直軸實際上是所得橢圓的主軸;你可能需要檢查這些取決於你的應用程序。