2012-03-09 95 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. 在用户端,延长线,直到交点,如果有一个图片。