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

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

一、函数的参数说明

输入参数:

PointA:射线的起点;

PointB:射线过的零一点;

Length:射线的长度;

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

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

color:显示的射线颜色。

二、函数的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,颜色红色。结果如下:

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 15:24:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 15:24:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 15:24:05       87 阅读
  4. Python语言-面向对象

    2024-03-25 15:24:05       96 阅读

热门阅读

  1. 机器学习核心原理

    2024-03-25 15:24:05       47 阅读
  2. Visual Studio 常用快捷键大全

    2024-03-25 15:24:05       38 阅读
  3. 设计模式之模板方法

    2024-03-25 15:24:05       45 阅读
  4. L2-022 重排链表(25分) c++代码

    2024-03-25 15:24:05       48 阅读
  5. 最全Hive面试题2024年(2万字详解)

    2024-03-25 15:24:05       47 阅读