我很难找到看似简单的东西.我在图表上有两个已知的坐标,(X1,Y1)和(X2,Y2).我想要识别的是(X3,Y3)的坐标.
我想过使用罪和cos但是一旦我到了这里,我的大脑停止工作.我知道
sin O = y/R
cos O = x/R
Run Code Online (Sandbox Code Playgroud)
所以我想简单地导入线的长度(在这种情况下它是2)并使用已知的角度.看起来很简单,但对于我的生活,我的大脑不会缠绕这个.
我需要这个的原因是因为我试图在matlab中使用poly2mask在图像上打印一条线.代码必须在2D空间中工作,因为我将使用该线构建电影.
X1 = [134 134 135 147 153 153 167]
Y1 = [183 180 178 173 164 152 143]
X2 = [133 133 133 135 138 143 147]
Y2 = [203 200 197 189 185 173 163]
YZdist = 2;
for aa = 1:length(X2)
XYdis(aa) = sqrt((x2(aa)-x1(aa))^2 + (Y2(aa)-Y1(aa))^2);
X3(aa) = X1(aa) * tan(XYdis/YZdis);
Y3(aa) = Y1(aa) * tan(XYdis/YZdis);
end
polmask = poly2mask([Xdata X3],[Ydata Y3],50,50);
Run Code Online (Sandbox Code Playgroud)
一种方法是首先构造一个矢量l连接点,(x1,y1)并将(x2,y2)该矢量顺时针旋转90度并将其添加到该点(x2,y2).
因此l=(x2-x1, y2-y1),其旋转版本是l'=(y2-y1,x1-x2)并且因此是感兴趣的点P=(x2, y2) + f*(y2-y1,x1-x2),其中f是期望的缩放因子.如果长度应该是相同的,那么f=1因此P=(x2 + y2-y1, y2 + x1-x2).