matlab - 在一条线的边缘绘制一条垂直线 - Matlab
问题描述
如何在一条线的边缘(起点和终点)上方和下方绘制一半垂直线(总长度 10)?所以,它看起来像一个旋转的误差线。
代码:
clc;
clear all;
close all;
x1 =0;
y1 = 10;
x2 = 2;
y2 = 15;
lineLength = 10;
m = (y2-y1)/(x2-x1);
perpSlope = -1/m
plot([x1,x2],[y1,y2]);
解决方案
您可以计算线方向的矢量dir
,将其旋转 90° orthDir
,然后将这条正交线添加/减去线端点。
clc;
clear all;
close all;
x1 =0;
y1 = 10;
x2 = 2;
y2 = 15;
p1 = [x1;y1];
p2 = [x2;y2];
plot([x1,x2],[y1,y2]);
lineLength = 10;
dir = [x1-x2;y1-y2];
dirNormalized = dir./norm(dir);
orthDir = [0,-1;1,0]*dirNormalized;
hold on;
plot([p1(1), p1(1)+orthDir(1)*5],[p1(2), p1(2)+orthDir(2)*5],'g-')
plot([p1(1), p1(1)-orthDir(1)*5],[p1(2), p1(2)-orthDir(2)*5],'g-')
plot([p2(1), p2(1)+orthDir(1)*5],[p2(2), p2(2)+orthDir(2)*5],'g-')
plot([p2(1), p2(1)-orthDir(1)*5],[p2(2), p2(2)-orthDir(2)*5],'g-')
axis equal