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度后

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python:生成表白爱心动画(程序的优化与打包)

目录 效果预览 功能的实现 优化内容 完整代码 性能分析 效果预览 程序参考于:python 爱心代码-CSDN博客https://blog.csdn.net/weixin_74994771/article/details/137294470?spm1000.2115.3001.6382&utm_mediumdistribute.pc_feed_v2.none-task-blog-hot-1…

力扣 |142. 环形链表 II

用快慢指针的方法 根据推出的表达式:slow和fast相遇的时候,让slow和位于头节点的p同时 向前走,刚好在入环的节点处相遇!注意:b和c交界的点不一定是从例如-4这个节点处, 可能是0节点处。因为相遇的点只能是…

【软件设计师】计算机软考下午题试题六,Java设计模式之简单工厂模式。

【软件设计师】计算机软考下午题试题六,Java设计模式之简单工厂模式。 代码如下: //简单工厂模式 public class SimpleFactory {public static void main(String[] args) {Product ProductAFactory.createProduct("A");ProductA.info();Produc…

C++---vector容器

是STL容器中的一种常用的容器,由于其大小(size)可变,常用于数组大小不可知的情况下来替代数组。vector容器与数组十分相似,被称为动态数组。时间复杂度为O(1)。 数组数据通常存储在栈中,vector数据通常存储…

个人简历主页搭建系列-06:jqcv 简历主题安装

jqcv 介绍 大家好呀,前段时间我在忙毕设的事情,这段时间继续写这个专题。 我们之前网站已经成功搭建起来了对吧,但是这个样式明显和我们的简历需求不符合,难道我们要自己配置 css 文件一点点进行修改吗? 其实并不用…

4月全新热文高科技,套用模板一键生成热文,没脑子拷贝,第二天出盈利

撰写热门文章,如今日头条或微信公众号文章,通常需要多长时间呢?从构思主题、搜集资料,到撰写成文,整个过程至少需要1小时,有时甚至可能需要2小时。 项目 地 址:laoa1.cn/1627.html 现在&…

css animation 动画详细学习

学习 CSS 动画是一个深入且富有创造性的过程,它允许开发者创建出引人入胜且交互性强的网页效果。以下是对 CSS 动画学习的一些总结和要点: 1. 关键帧动画(keyframes) 使用 keyframes 规则定义动画的整个过程。在 keyframes 中&a…

【PyQt5】环境配置

PyQt5 环境配置 一、前言1.1 PyQt5介绍1.2 PyCharm集成Pyqt5 二、pyqt5安装三、PyQt5-tools工具包安装四、常用工具环境配置4.1、环境变量配置4。2、验证是否安装成功 五、pycharm中设置Qt工具(Qt Designer、PyUIC、PyRcc)5.1、配置Qt Designer5.2、配置…

【计算机毕业设计】日用百货交易网站——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

QT天气预报

QT-天气预报 1.界面设计 2.开发  2.1 重写鼠标右键退出功能  2.2 重写鼠标左键移动窗口  2.3 QtHttp编程获取天气原始数据    2.3.1 发送HTTP请求    2.3.2 读取数据    2.3.3 处理网络失败请求 2.4 JSON数据    2.4.1 QT生成JSON数据    2.4.2 QT解…

[lesson22]对象的销毁

对象的销毁 对象的销毁 生活中的对象都是被初始化后才上市的 生活中的对象被销毁前会做一些清理工作 一般而言,需要销毁的对象都应该做清理 解决方案 为每个类都提供一个public的free函数对象不在需要时立即调用free函数进行清理 存在的问题 free只是一个普通…

wife_wife-攻防世界

题目 注册发现可以注册管理员,但是好像有条件 抓包试试 没思路了 看看其他师傅的wp,用到 js 原型链污染攻击 Nodejs原型链污染攻击基础知识 | Savants Blog (lxscloud.top) 网站后端是Node.js搭建的 原型链污染 简单来讲,通过 newUser.__proto__ …

使用 HBuilderX自动上传Uniapp 微信小程序代码

HBuilderX内置相关环境,开箱即用,无需配置nodejs。本文只介绍发布微信小程序的步骤。 1.下载和安装 HBuilderX hbuilder首页:https://www.dcloud.io/hbuilderx.html 下载hbuilder编辑器,选择对应的系统,Windows和mac正式版即可,下载后免安…

mysql8.0高可用集群架构实战

MySQL :: MySQL Shell 8.0 :: 7 MySQL InnoDB Cluster 基本概述 InnoDB Cluster是MySQL官方实现高可用读写分离的架构方案,其中包含以下组件 MySQL Group Replication,简称MGR,是MySQL的主从同步高可用方案,包括数据同步及角色选举Mysql Shell 是InnoDB Cluster的管理工具,用…

基于SpringBoot+Vue的健身器材用品网站(源码+文档+部署+讲解)

一.系统概述 随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决各种问题,必录德健身器材用品网展现了其蓬勃生命力和广阔的前景。与此同时&#…

AugmentedReality之路-平面检测(5)

本文介绍通过AR检测水平平面和垂直平面,并将检测到的平面转化为Mesh 1、在首页添加功能入口 在首页添加一个按钮,命名为Start World Track 2、自定义ExecStartAREvent 创建ARSessionConfig并取名为ARSessionConfig_World 自定义ExecStartAREvent&…

2024年你应该防范的11个WordPress安全漏洞问题:由资深程序员撰写

微软创始人比尔盖茨曾说过,“安全对每个人都有同样的影响。在网站安全方面,没有特定的主题、目标或受众。” 但WordPress是互联网上最受欢迎的CMS。它也是被黑客攻击次数最多的。针对WordPress的攻击次数超过了每秒2800次。网络攻击会浪费时间、精力和金…

camera驱动学习总结记录

https://www.yuque.com/u2132176/yfiyal/ch1zsrgzevcwf1rw 视频教程里面对应的gc2053c驱动源码注解: gc2053.c(60 KB) 对应的驱动文档: Rockchip_Driver_Guide_VI_CN_v1.1.1(2).pdf(2.3 MB) 视频里面对应的mipi协议文档汇总: MIPI标准文档大…

MoCo v1(CVPR 2020)原理与代码解读

paper:Momentum Contrast for Unsupervised Visual Representation Learning official implementation:https://github.com/facebookresearch/moco 背景 最近的一些研究提出使用对比损失相关的方法进行无监督视觉表征学习并取得了不错的结果。尽管是受…

springcloud第4季 springcloud-alibaba之nacos篇

一 nacos 1.1 nacos作用介绍 nacos是一个分布式的配置中心和注册发现中心。 nacos是 dynamic naming configuration service nacosconfigbus 实现动态刷新;nacosconsul 1.2 各个注册中心对比 注册中心CAP模型控制台管理社区活跃度EureakaAp支持低zkcp不支持中…