2012-03-09 94 views
0

我正在寫一個應用程序,它將根據照片中可以看到的線條來計算相機的焦距。例如,如果您拍攝一個房間的照片,天花板線可以是一條直線(水平方向),地板可以是另一條直線(水平方向),牆壁可以是第三條直線(垂直方向)。我的應用程序的目標是讓用戶一次選擇一條直線,一旦選擇了3條直線,這些直線就需要相交形成一個「三角形」。線相交

我的問題是,因爲所選的線不一定相交,我如何擴展線,直到它與另一線相交?在我的應用程序中,我有所有3個用戶選擇行(Vector2's)的開始和結束位置。但是,如何擴展每條線,直到與其他兩條線相交爲止?

如果有人需要的圖像,以澄清我的意思是,答覆和不適上傳一個送我到Flickr

+0

我會將它發佈在數學部分或物理。 – 2012-03-09 14:39:10

+0

這不能總是完成。如果這些線實際上是平行的,則不會有任何延伸使它們相交。 – 2012-03-09 14:47:35

回答

0

說每一行由兩個vector2的表示:v1和v2,在給定的行中的所有點將由等式給出:p(x) = v1 + x(v2-v1)。每條線都有這種形式的等式。對於每一對線,你必須找到x的值,這兩個方程給出了相同的p(x); p(x)將是這兩條線的交點。

+0

如果沒有給出相同p(x)的x的值,那麼你將會在Don提到的情況下(平行線)。 – Eduardo 2012-03-09 14:48:33

0

聽起來像你需要做3件事情。

  1. 將線條延伸到圖片的末尾(在您的代碼中,用戶不可見)。

  2. 計算直線交點。看到這個答案:detecting line intersection

  3. 在用戶端,延長線,直到交點,如果有一個圖片。