Matlab之已知2点绘制长度可定义的射线

该博客主要介绍在笛卡尔坐标系中,利用Matlab实现绘制过两点的自定义长度射线。详细说明了函数的输入输出参数,如起点、过点、长度等,还给出服从正态分布的角度误差的参数及代码,并展示了一个绘制实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:在笛卡尔坐标系中,已知两个点的位置,绘制过这两点的射线。同时射线的长度可以自定义。

一、函数的参数说明

输入参数:

PointA:射线的起点;

PointB:射线过的另一点;

Length:射线的长度;

theta:射线的旋转变换角度;

AOAError:服从正态分布的测向误差方差值;

color:显示的射线颜色。

输出参数:

AOA:射线的真方位,也即地理正北方位角。

二、函数的Matlab代码

%% 绘制直线:已知2点的坐标,绘制过2点的自定义长度的直线
function [AOA]=DrawLine(PointA,PointB,Length,theta,AOAError,color)
theta=theta+generate_gaussian_noise_with_variance(1, AOAError);

startPoint=PointA;
% 计算向量差
vector = PointB - PointA;
% 归一化向量,方向向量
direction_vector = vector / norm(vector);% direction_vector 现在是表示P1到P2方向的单位向量

AOA=mod(atan2(direction_vector(1),direction_vector(2))*180/pi+360,360)+theta;

% 旋转方向向量
% 旋转矩阵
R = [cos(theta*pi/180), -sin(theta*pi/180);
     sin(theta*pi/180),  cos(theta*pi/180)]; 
% 旋转方向向量
v_rotated = R * direction_vector';
 
% 定义一个足够大的长度来表示无限长直线
endPoint = PointA + Length * v_rotated'; 
% 绘制直线
line([startPoint(1), endPoint(1)], [startPoint(2), endPoint(2)], 'Color', color, 'LineWidth', 2);
hold on

end

 2.1 服从正态分布的角度误差

输入参数:

size:噪声的维度;

variance:方差的大小。

输出参数:

gaussian_noise:服从正态分布,方差为variance的随机数。

function gaussian_noise = generate_gaussian_noise_with_variance(size, variance)
    % 生成高斯白噪声
    % size 是噪声的大小,例如 size(100, 1) 或 size(100, 100)
    % variance 是指定的方差
 
    % 生成白噪声
    gaussian_noise = randn(size);
    
    % 计算标准差
    std_dev = sqrt(variance);
    
    % 缩放噪声到指定的标准差
    gaussian_noise = gaussian_noise * std_dev;
end

三、绘制的实例

绘制一条射线,起点(4,3),过点(7,9),长度10,旋转角度0度,测向误差为0,颜色红色。结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kissgoodbye2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值