线交叉点

时间:2012-03-09 14:36:24

标签: lines line-intersection

我正在编写一个应用程序,它将根据照片中可以看到的线条计算相机的焦距。例如,如果拍摄房间的照片,天花板线可以是一条直线(水平),地板可以是另一条直线(水平),墙壁可以是第三条直线(垂直)。我的应用目的是让用户一次选择一条直线,一旦选择了3条线,就需要将线相交以形成“三角形”。

我的问题是因为选中的线不一定相交,如何延长线直到它与另一条线相交?在我的应用程序中,我有所有3个用户选择行(Vector2)的开始和结束位置。但是如何延伸每一条直到它与另外两条线相交?

如果有人需要图片来澄清我的意思,请给我回复,然后将其上传至Flickr

2 个答案:

答案 0 :(得分:0)

假设每条线由两个vector2表示:v1和v2,该给定线中的所有点将由等式给出:p(x) = v1 + x(v2-v1)。每一行都有这种形式的等式。对于每对线,您必须找到x的值,它为两个方程提供相同的p(x); p(x)将是这两条线的交点。

答案 1 :(得分:0)

听起来你需要做3件事。

  1. 将线条延伸到图片的末尾(在您的代码中,对用户不可见)。

  2. 计算线交点。请参阅此答案:detecting line intersection

  3. 在用户端,如果图片上有一条线,则将线条延伸到交点。