目的:在直角坐标系下,求两个直线的交点坐标
一、函数的参数说明
输入参数:
PointA:直线A上的点坐标;
AngleA:直线A的倾斜角,单位度;
PointB:直线B上的点坐标;
AngleB:直线B的倾斜角,单位度;
输出参数:
TargetPoint:交点坐标
二、函数的Matlab代码
cpp
%% 双站测向交叉定位算法
%% 自拟算法,通过左除计算
function [TargetPoint]=DoubleStationCrossLocAlgorithm(PointA,AngleA,PointB,AngleB)
A=[1,-tand(AngleA);1,-tand(AngleB)];
b=[PointA(2)-tand(AngleA)*PointA(1);
PointB(2)-tand(AngleB)*PointB(1)];
TargetPoint=A\b;%左除运算,计算交叉点坐标
end
2.1 方向向量转换为真方位
direction_vector:方向向量
AOA:真方位
cpp
% 归一化向量,方向向量
direction_vector = vector / norm(vector);% direction_vector 现在是表示P1到P2方向的单位向量
AOA=mod(atan2(direction_vector(1),direction_vector(2))*180/pi+360,360);
2.2 真方位转换为倾斜角
cpp
%% 真方位转换为倾斜角
function [ElevationAngle]=Azimuth2ElevationAngle(Azimuth)
%% 第一步计算正弦和余弦值
sine_values = sind(Azimuth);
cosine_values = cosd(Azimuth);
% 构造斜对角线单位向量
% 斜对角线单位向量的x和y分量分别为正弦值和余弦值
vector_y = cosine_values;
vector_x = sine_values;
% 计算倾斜角对应的正切值
ElevationAngle =mod((180+atan2(vector_y, vector_x)*180/pi),180);
end