2d笛卡尔空间中垂直线段的坐标

Hoj*_*olf 2 math matlab

我很难找到看似简单的东西.我在图表上有两个已知的坐标,(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)

ewc*_*wcz 5

一种方法是首先构造一个矢量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).