首页 > 解决方案 > 在一条线的边缘绘制一条垂直线 - 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]);

标签: matlab

解决方案


您可以计算线方向的矢量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

在此处输入图像描述


推荐阅读