Android 卫星通信计算方位角,仰角,极化角

需求描述: 已知手机的经纬度和高度信息,需要通过公式计算出手机收星的最优方位和仰角,用以调整UI界面显示,以便引导用户实现和当前卫星方位和仰角的对准,达到快速入网的目的。

术语说明

术语说明
方位角手机天线在所处位置针对北极的偏转角度,顺时针为正,逆时针为负
仰角手机天线在所处位置针对地平面的仰角
极化角天线馈源和电磁波的夹角,方位角和仰角的调节参数
  /*** 计算卫星天线的方位角** @param satelliteLongitude 卫星经度* @param satelliteLatitude  卫星纬度(或赤纬)* @param receiverLongitude  接收地经度* @param receiverLatitude   接收地纬度* @return 方位角(以弧度为单位)*/public static double calculateAzimuth(double satelliteLongitude, double satelliteLatitude,double receiverLongitude, double receiverLatitude) {// 将角度转换为弧度double satLonRad = Math.toRadians(satelliteLongitude);double satLatRad = Math.toRadians(satelliteLatitude);double recLonRad = Math.toRadians(receiverLongitude);double recLatRad = Math.toRadians(receiverLatitude);// 计算经度差double deltaLambda = satLonRad - recLonRad;// 计算方位角double azimuthRad = Math.atan2(Math.sin(deltaLambda),Math.cos(recLatRad) * Math.tan(satLatRad) - Math.sin(recLatRad) * Math.cos(deltaLambda));// 如果需要,将方位角转换为度数double azimuthDeg = Math.toDegrees(azimuthRad);// 如果需要,将方位角调整到0-360度范围
//        if (azimuthDeg < 0) {
//            azimuthDeg += 360;
//        }return azimuthDeg;}/*** 计算卫星仰角** @param satLat 卫星纬度(度)* @param satLon 卫星经度(度)* @param recLat 接收地纬度(度)* @param recLon 接收地经度(度)* @param satAlt 卫星高度(千米,相对于地球表面)* @return 仰角(度)*/public static double calculateElevation(double satLat, double satLon, double recLat, double recLon, double satAlt) {// 将角度转换为弧度double satLatRad = Math.toRadians(satLat);double satLonRad = Math.toRadians(satLon);double recLatRad = Math.toRadians(recLat);double recLonRad = Math.toRadians(recLon);// 地球半径,单位:千米double earthRadius = 6371.0;// 卫星到地心的距离,单位:千米double satelliteToEarthCenter = earthRadius + satAlt;// 计算接收地与卫星之间的纬度差和经度差(以弧度为单位)double latDiff = satLatRad - recLatRad;double lonDiff = satLonRad - recLonRad;// 计算仰角(以弧度为单位)// 这里使用了一个简化的公式,实际应用中可能需要更复杂的模型double elevationRad = Math.asin(Math.sin(latDiff) * Math.cos(satelliteToEarthCenter / earthRadius) +Math.cos(recLatRad) * Math.cos(satLatRad) *Math.sin(satelliteToEarthCenter / earthRadius) * Math.cos(lonDiff));// 将弧度转换为度数double elevationDeg = Math.toDegrees(elevationRad);//        // 确保仰角在0到90度之间
//        if (elevationDeg < 0) {
//            elevationDeg = 0;
//        } else if (elevationDeg > 90) {
//            elevationDeg = 90;
//        }return elevationDeg;}/*** 计算极化角** @param azimuth 卫星方位角(度)* @param elevation 卫星仰角(度)* @return 极化角(度)*/public static double calculatePolarizationAngle(double azimuth, double elevation) {// 将角度转换为弧度double azimuthRad = Math.toRadians(azimuth);double elevationRad = Math.toRadians(elevation);// 计算极化角(弧度)double polarizationAngleRad = Math.atan2(Math.sin(azimuthRad), Math.tan(elevationRad));// 将弧度转换为角度double polarizationAngleDeg = Math.toDegrees(polarizationAngleRad);// 确保极化角在0到180度之间
//        if (polarizationAngleDeg < 0) {
//            polarizationAngleDeg += 180;
//        } else if (polarizationAngleDeg > 180) {
//            polarizationAngleDeg -= 180;
//        }return polarizationAngleDeg;}/*** 将角度转换为弧度** @param degrees 角度值* @return 弧度值*/public static double toRadians(double degrees) {return degrees * Math.PI / 180.0;}/*** 将弧度转换为度数** @param radians 弧度值* @return 度数值*/public static double toDegrees(double radians) {return radians * 180.0 / Math.PI;}

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

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

相关文章

鸿蒙开发面试真题分享~

1. 在鸿蒙应用开发中&#xff0c;有哪些常用的性能优化策略和技术手段&#xff0c;如启动速度优化、内存管理优化、功耗控制等&#xff1f; 参考答案&#xff1a; 2. 鸿蒙系统强调跨平台特性&#xff0c;你会如何利用这一特性来优化多端部署和适配&#xff1f; 参考答案&…

Nuxt3 初学,基础配置,页面结构搭建,引入element

1.下载Nuxt框架 Nuxt 中文站 - 直观的Web框架 Nuxt3文档 NuxtNuxt是一个开源框架&#xff0c;它使web开发直观而强大。自信地创建高性能和生产级全栈web应用程序和网站。https://www.nuxt.com.cn/根据官方文档进行配置 2.配置页面 1.主要页面结构 导航栏内容底部 1.在comp…

YOLOv8独家改进:backbone改进 | TransXNet:聚合全局和局部信息的全新CNN-Transformer视觉主干| CVPR2024

💡💡💡本文独家改进:CVPR2024 TransXNet助力检测,代替YOLOv8 Backbone 改进结构图如下: 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡💡💡全网独家首发创新(原创),适合paper !!! 💡…

安装yocto过程中遇到的问题记录

步骤我是参考以下链接&#xff1a; https://blog.csdn.net/zz2633105/article/details/126076286 过程中的坑&#xff1a; 一&#xff0c; Please make sure locale en_US.UTF-8 is available on your system解决&#xff1a; To ensure that the locale ‘en_US.UTF-8’ is…

Vcenter esxi web界面访问提示权限被拒绝

一、问题现象 原因 应该是在vCenter中添加主机的时候&#xff0c;将锁定模式设置成了严格。 二、解决过程 2.1 方式一 BMC登录主机&#xff0c;连接显示器和键盘。 输入账号密码&#xff0c;按F2进行设置&#xff0c;将会打开一个界面&#xff0c;第一个选项是设置密码&…

一台服务器部署两个独立的mysql实例

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

工程师日常:六大茶类--黑茶

工程师日常&#xff1a;六大茶类–黑茶 黑茶也是六大茶类之一&#xff0c;是加工过程中有微生物参与品质形成的一种后发酵茶。因为它在加工储藏和运输过程中&#xff0c;微生物的胞外酶的作用&#xff0c;产生了一些其他茶类没有的或者说是含量比较低的一些生化活性物质。在调…

qt+ffmpeg 实现音视频播放(一)

一、ffmpeg下载 官网&#xff1a;点击跳转 二、模块介绍 1. libavcodec&#xff1a;音视频编解码库&#xff0c;提供了多种编解码器&#xff0c;可以支持多种音视频格式的编解码操作。 2. libavformat&#xff1a;音视频封装和解封装库&#xff0c;提供了多种封装格式的支持…

【C++】string进一步介绍

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. 迭代器2.1 反向迭代器2.2 const对象迭代器 3. Capacity3.1 size和length3.2 max_size3.3 capacity3.4 clear3.5 shrink_to_fit &#xff08;了解即可&#xff09;3.6 reserve3.7 resize 4. Element access4…

离线数仓(七)【DIM 层开发】

前言 今天开始 DIM 层的开发&#xff0c;说开发好像有点不配&#xff0c;还只是学习阶段&#xff0c;离开发还有很长的路要走。 一个人想象自己不懂得的事很容易浪漫。 --《沉默的大多数》王小波 1、DIM 层开发 DIM层设计要点&#xff1a; DI…

海豚调度系列之:任务类型——Apache SeaTunnel

海豚调度系列之&#xff1a;任务类型——Apache SeaTunnel 一、Apache SeaTunnel二、创建任务三、任务参数四、任务样例1.在 DolphinScheduler 中配置 SeaTunnel 环境2.配置 SeaTunnel 任务节点 一、Apache SeaTunnel SeaTunnel 任务类型&#xff0c;用于创建并执行 SeaTunnel…

查看docker所有映射到宿主机的端口

要查看 Docker 中所有映射到宿主机的端口&#xff0c;您可以使用以下命令&#xff1a; docker ps -a --format "table {{.Names}}\t{{.Ports}}"该命令将显示所有正在运行的容器的名称和它们所映射的端口信息。 如果您只想查看正在运行的容器的端口映射信息&#xf…

【LeetCode热题100】240. 搜索二维矩阵 II

一.题目要求 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 ‘每列的元素从上到下升序排列。 二.题目难度 中等 三.输入样例 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7…

Web-based DBMS Technology 线上数据库

Example Online Databases • https://www.planespotters.net/ • https://www.comics.org/ • https://www.quandl.com/ • https://www.enigma.com/ • https://www.sportradar.com/ Basics of WWW • The Web is a very large client-server system — Connected through r…

「jQuery系列」jQuery noConflict() 方法、运用JSONP

文章目录 一、noConflict() 方法使用方法&#xff1a;注意事项&#xff1a; 二、JSONP简介1. 跨域数据请求2. API 数据调用3. 简单的数据共享使用注意事项&#xff1a;示例&#xff1a; 三、jQuery 使用 JSONP四、热门文章 一、noConflict() 方法 jQuery.noConflict() 方法是 …

AI日报:一个新的“科技超级周期”正在出现

文章目录 技术周期预测可连接设备 技术周期 未来学家艾米韦伯表示&#xff0c;人工智能和其他两种通用技术将迎来一个新的“技术超级周期”&#xff0c;预计将在经济中创造“实质性和持续性”的变化。 她在SXSW 2024上表示&#xff0c;过去的科技超级周期是由通用技术引发的&…

python 猜数字 random

#猜数字 如果数字太大 则输出 Too large! 如果数字太小 则输出 Too small! 如果猜中则输出 Just right! import random numberrandom.randint(1,100)while True:numint(input(输入1-100之间的数))if num>number:print(你猜的数字太大了 请重新输入)elif num<number:prin…

HTTP压测工具wrk安装与使用

一、前言 wrk是一个基于C语言开发的用于HTTP性能测试的开源工具&#xff0c;它可以模拟多个并发连接&#xff0c;测量服务器的响应时间和吞吐量&#xff0c;并且会给出较为全面的测试结果 1、本文主要内容 在Windows、macOS、Linux&#xff08;CentOS & Ubuntu等&#xff…

任务弹窗更新为任务对话框

1.设计初心 在玩家接取任务/交付任务时&#xff0c;界面弹出的UI &#xff0c;需要与玩家互动&#xff0c;点击“接取”“完成”。等等字样【改动前】频繁的手动点击会中断玩家跑图的流畅性&#xff0c;也降低了任务寻路系统的实际体验。于是现在变成类似FakeObj 对话框的模式…

数字逻辑-时序逻辑电路一

一、实验目的 &#xff08;1&#xff09;熟悉触发器的逻辑功能及特性。 &#xff08;2&#xff09;掌握集成D和JK触发器的应用。 &#xff08;3&#xff09;掌握时序逻辑电路的分析和设计方法。 二、实验仪器及材料 三、实验内容及步骤 1、用D触发器&#xff08;74LS74&am…