我正在编写一个应用程序,它将根据照片中可以看到的线条计算相机的焦距。例如,如果拍摄房间的照片,天花板线可以是一条直线(水平),地板可以是另一条直线(水平),墙壁可以是第三条直线(垂直)。我的应用目的是让用户一次选择一条直线,一旦选择了3条线,就需要将线相交以形成“三角形”。
我的问题是因为选中的线不一定相交,如何延长线直到它与另一条线相交?在我的应用程序中,我有所有3个用户选择行(Vector2)的开始和结束位置。但是如何延伸每一条直到它与另外两条线相交?
如果有人需要图片来澄清我的意思,请给我回复,然后将其上传至Flickr
答案 0 :(得分:0)
假设每条线由两个vector2表示:v1和v2,该给定线中的所有点将由等式给出:p(x) = v1 + x(v2-v1)
。每一行都有这种形式的等式。对于每对线,您必须找到x的值,它为两个方程提供相同的p(x); p(x)将是这两条线的交点。
答案 1 :(得分:0)
听起来你需要做3件事。
将线条延伸到图片的末尾(在您的代码中,对用户不可见)。
计算线交点。请参阅此答案:detecting line intersection
在用户端,如果图片上有一条线,则将线条延伸到交点。