Matlab之过球面一点的平面方程

这篇文章描述2件事情:

1、已知球面上任意点,求过该点、地心、与北极点的平面方程(即过该点的经线平面方程);

2、绕过球心的任意轴旋转平面得到新平面的方程

一、已知球面上任意点,求过该点、地心、与北极点的平面方程(即过该点的经线平面方程)

输入经纬度,输出过该点,穿过地心、与北极点的平面方程,输出参数是平面方程的参数。

平面方程基本形式为:A*X+B*Y+C*Z+D=0 

%% 已知球面上任意点,求过该点、地心、与北极点的平面方程(即过该点的经线平面方程)
%% 输入参数:任意点的经纬度(LNG,LAT)
%% 输出参数:平面方程的参数,平面方程的表达式为A*X+B*Y+C*Z+D=0
function [A,B,C,D]=GPS2EQPlane(LNG,LAT)
%% 地理常数
R=6371;%地球半径,单位km%% 经纬度转地理坐标系坐标
xt=R*cosd(LAT)*cosd(LNG);
yt=R*cosd(LAT)*sind(LNG);
zt=R*sind(LAT);%% 平面计算
% 计算单位法向量
nx = -yt/(sqrt(xt^2+yt^2));
ny = xt/(sqrt(xt^2+yt^2));
nz = 0;% 法向量
n = [nx; ny; nz];%% 求解平面方程的参数形式
A = n(1);
B = n(2);
C = n(3);
D = -(A * xt + B * yt + C * zt);
end

二、绕过球心的任意轴旋转平面得到新平面

%% 绕过球心的任意轴旋转平面得到新平面
% 输入参数
% P:球面上的一点坐标,在直角坐标系下(x,y,z)
% N:原平面的法向量
% theta:绕旋转轴旋转的角度,单位度
% 输出参数:新平面的参数A*X+B*Y+C*Z+D=0
function [newA, newB, newC, newD] = rotatePlane(P, N, theta)
%% 地理常数
R=6371;%地球半径,单位km%% 计算点 P到球心的向量
OP = P; % 假设球心在原点,P 是点 P 的笛卡尔坐标
% 旋转轴的单位化
A = OP / norm(OP);%% 计算右乘旋转矩阵
C=cosd(theta);
S=sind(theta);
R=[C+A(1)^2*(1-C) A(1)*A(2)*(1-C)-A(3)*S A(1)*A(3)*(1-C)+A(2)*S;A(1)*A(2)*(1-C)+A(3)*S C+A(2)^2*(1-C) A(2)*A(3)*(1-C)-A(1)*S;A(1)*A(3)*(1-C)-A(2)*S A(2)*A(3)*(1-C)+A(1)*S C+A(3)^2*(1-C)];%% 旋转原平面的法向量
rotated_N = N*R;%% 计算新的平面方程的系数
newA = rotated_N(1);
newB = rotated_N(2);
newC = rotated_N(3);
newD = -(newA * P(1) + newB * P(2) + newC * P(3));
end

三、示例

3.1 代码1示例

以海南凤凰机场为例:

三亚凤凰国际机场位于经度:109.414871、纬度:18.303421。

3.1.1 测试代码

clc;clear;close all
%% 经纬度和地理坐标系的转换仿真
%% 输入参数
R=6371;%地球半径,单位km
lng=109.414871;%经度
lat=18.303421;%纬度%% 算法计算
xt=R*cosd(lat)*cosd(lng);
yt=R*cosd(lat)*sind(lng);
zt=R*sind(lat);%% 结果展示(绘制三维球体地图)
plot_Globe%% 结果展示(绘制三维点)
% 绘制三维点图
plot3(xt, yt, zt, 'o', 'MarkerSize', 10, 'MarkerEdgeColor', 'r', 'MarkerFaceColor', 'g');%% 平面计算
[A,B,C,D]=GPS2EQPlane(lng,lat);
%% 结果展示(绘制三维面)
plot_plane(A,B,C,D, 7000);% %% 旋转平面
% theta =90; % 旋转角度
% [newA, newB, newC, newD] = rotatePlane([xt yt zt],[A B C], theta);% %% 结果展示(绘制三维面)
% plot_plane(newA, newB, newC, newD, 7000);

3.1.2 结果展示

3.2 代码二示例

以经度:0、纬度:0为例:

3.1.1 测试代码

clc;clear;close all
%% 经纬度和地理坐标系的转换仿真
%% 输入参数
R=6371;%地球半径,单位km
lng=109.414871;%经度
lat=18.303421;%纬度%% 算法计算
xt=R*cosd(lat)*cosd(lng);
yt=R*cosd(lat)*sind(lng);
zt=R*sind(lat);%% 结果展示(绘制三维球体地图)
plot_Globe%% 结果展示(绘制三维点)
% 绘制三维点图
plot3(xt, yt, zt, 'o', 'MarkerSize', 10, 'MarkerEdgeColor', 'r', 'MarkerFaceColor', 'g');%% 平面计算
[A,B,C,D]=GPS2EQPlane(lng,lat);
% %% 结果展示(绘制三维面)
% plot_plane(A,B,C,D, 7000);%% 旋转平面
theta =45; % 旋转角度
[newA, newB, newC, newD] = rotatePlane([xt yt zt],[A B C], theta);%% 结果展示(绘制三维面)
plot_plane(newA, newB, newC, newD, 7000);

3.1.2 结果展示

旋转45度后

旋转90度后

旋转180度后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/813948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javase_进阶 day10 集合(泛型,数据结构)

1.泛型 1.1泛型概述 泛型的介绍 ​ 泛型是JDK5中引入的特性&#xff0c;它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如:…

CopyTranslator下载地址及安装教程

CopyTranslator是一款免费且开源的机器翻译工具&#xff0c;旨在提供快速、便捷的翻译服务。它采用了先进的神经网络机器翻译技术&#xff0c;能够提供准确、流畅的翻译结果。 CopyTranslator的特点和功能如下&#xff1a; 多语言翻译&#xff1a;支持多种常见的语言对&#…

【随笔】Git 高级篇 -- 项目里程碑 git tag(二十)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

leetcode142 环形链表2

题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部…

基于51单片机篮球24秒倒计时设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机篮球24秒倒计时设计( proteus仿真程序设计报告原理图讲解视频&#xff09; 基于51单片机篮球24秒倒计时设计 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真设计4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接下载链接 仿真图pro…

(3)(3.1) 英特尔Realsense深度摄像头(三)

文章目录 前言 10 系统概述 11 手动设置配套计算机 前言 本文介绍如何将英特尔 Realsense 深度摄像头(Intel Realsense Depth Camera)与 ArduPilot 配合使用&#xff0c;以实现避障(obstacle avoidance)。该方法使用在配套计算机上运行的 Python 脚本&#xff08;非 ROS&am…

HackTheBox-Machines--MonitorsTwo

文章目录 0x01 信息收集0x02 CVE-2022-46169 漏洞利用0x03 权限提升0x04 提升到root权限 MonitorsTwo 测试过程 0x01 信息收集 a.端口扫描: 发现22、80端口    b.信息收集: 1.2.22 Cacti信息收集 nmap -sC -sV 10.129.186.1321.访问 10.129.186.132&#xff0c;为 1.2.22 Ca…

社交革命的引领者:探索Facebook的创新策略

1. 引言&#xff1a;社交媒体的崛起 社交媒体的兴起标志着信息时代的到来&#xff0c;它不仅改变了人们的生活方式&#xff0c;也影响着整个社会结构。作为社交媒体的先驱者&#xff0c;Facebook以其创新的策略和领先的技术&#xff0c;成为了这场社交革命的引领者。从2004年马…

itop4412编译内核时garbage following instruction -- `dmb ish‘ 解决方案

王德法 没人指导的学习路上磕磕绊绊太耗费时间了 今天编译4412开发板源码时报 garbage following instruction – dmb ish’ 以下是解决方案&#xff1a; 1.更新编译器 sudo apt-get install gcc-arm-linux-gnueabi 更新后修改Makefile 中编译器路径如下图 2.你以为更新完就可…

SqlServer功能性配置选择

功能性配置 下面的是必选的

传输层协议——UDP/TCP协议

目录 端口号 端口号范围 pidof UDP协议 UDP协议格式 UDP特点 UDP缓冲区 UDP的注意事项 基于UDP的应用层协议 TCP协议 TCP协议格式 序号与确认序号 窗口大小 6个标记位 紧急指针 确认应答机制 连接管理机制 三次握手 四次挥手 超时重传机制 流量控制 滑动…

【计算机网络】ip子网划分--超详细例题解析

Hello!这一篇主要是计算机网络中的ip地址子网划分的例题&#xff0c;这里例举了四个题型。保证即便从0也可以掌握&#xff01;(前面是一些预备知识&#xff0c;不熟悉的小伙伴一定要看下学习下哦&#xff5e;) 这也是博主的学习过程&#xff0c;做题中仅仅我的理解哦。若文章中…

Unity之C#面试题(二)

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity之C#面试题&#xff08;二&#xff09; TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&a…

langchain 文本向量化存储,并检索相似 topK

目录 chroma 检索 faiss 检索 检索器 相似性 最大相关性mmr 相似数阈值 txt 有多行&#xff0c;我的这份数据有 67 行&#xff0c;样例如下&#xff1a; 字段1\t值1\n 字段2\t值2\n ... chroma 检索 pip install langchain-chroma 在本地下载了 embedding 模型&…

SpringBoot 集成H2数据库,启动执行sql, 中文乱码

目录 H2数据库介绍 SpringBoot版本&#xff1a;SpringBoot 2.1.12.RELEASE 快速集成H2&#xff0c;maven依赖 快速集成H2&#xff0c;数据源及关键参数配置 spring.datasource.schema参数&#xff08;建表SQL脚本&#xff09; spring.datasource.data参数&#xff08;更新、…

Golang | Leetcode Golang题解之第19题删除链表的倒数第N个结点

题目&#xff1a; 题解&#xff1a; func removeNthFromEnd(head *ListNode, n int) *ListNode {dummy : &ListNode{0, head}first, second : head, dummyfor i : 0; i < n; i {first first.Next}for ; first ! nil; first first.Next {second second.Next}second.N…

Nacos-默认token.secret.key-配置不当权限绕过漏洞复现

漏洞描述&#xff1a; Nacos 身份认证绕过漏洞(QVD-2023-6271)&#xff0c;开源服务管理平台 Nacos在默认配置下未对 token.secret.key 进行修改&#xff0c;导致远程攻击者可以绕过密钥认证进入后台&#xff0c;造成系统受控等后果。 漏洞信息 公开时间&#xff1a;2023-03…

11 Php学习:函数

PHP 内建函数Array 函数 PHP Array 函数是 PHP 核心的组成部分。无需安装即可使用这些函数。 创建 PHP 函数 当您需要在 PHP 中封装一段可重复使用的代码块时&#xff0c;可以使用函数。下面详细解释如何创建 PHP 函数并举例说明。 创建 PHP 函数的语法 PHP 函数的基…

生成式AI对UiPath来说是机遇还是挑战?

企业争相通过技术革新来领跑市场&#xff0c;机器人流程自动化&#xff08;RPA&#xff09;技术更是将企业的效率和成本控制推向了新的高度。但当人工智能&#xff08;AI&#xff09;的最新进展——生成式AI登上舞台时&#xff0c;它不仅带来了变革的可能&#xff0c;还提出了一…

Vue3---基础2(component)

主要讲解 component 的创建 以及vue插件的安装 Vue.js Devtools 为谷歌浏览器的Vue插件&#xff0c;可以在调试工具内查看组件的数据等 下载 有两种下载方式 1. 谷歌应用商店 打开Chrome应用商店去下载&#xff0c;这个方法需要魔法 2. 极简插件 极简插件官网_Chrome插件下载_…