0

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

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

如果有人需要一张图片来澄清我的意思,请给我回复,我会上传一张到 Flickr

4

2 回答 2

0

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

于 2012-03-09T14:46:14.257 回答
0

听起来你需要做 3 件事。

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

  2. 计算线交点。看到这个答案:检测线交点

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

于 2012-03-09T14:47:45.007 回答