平面上两点和方位角计算目标交点的算法(应该可用于 MC 末地传送门三角定位)

news/2025/12/9 20:33:40/文章来源:https://www.cnblogs.com/PenGoFox/p/19328226

前言

之前看 MC 视频的时候有个人说了怎么用三角定位来确定末地传送门的位置。
说的是在两个不同的位置扔出末影珍珠,然后记住这两个位置和末影珍珠的方位角,就可以计算出来。
肯定有人已经把算法弄出来了,但是我想自己试试,就得出了自己的一个算法。
当然这个算法是 xOy 平面的,MC 的平面应该是 xOz 平面;而且 MC 的方位角的计算我也不知道是怎么算的,以后有空了想起来再对应一下吧。

算法

在 xOy 平面上,有原点 \(O\)、已知位置 \(P_1(x_1,y_1)\)\(P_2(x_2,y_2)\) 和未知位置 \(P_t(x_t,y_t)\)
定义方位角在 x 轴正方向上为 0,方位角正方向从 x 轴到 y 轴。对于 \(P_1\)\(P_2\) 的局部方位角有相同的定义,只是该方位角以该点为原点。

现有条件:以 \(P_1\) 为原点方位角为 \(\theta_1\) 的射线与以 \(P_2\) 为原点方位角为 \(\theta_2\) 的射线交于点 \(P_t\)(当然,这三个点不能共线)
\(P_t\) 的坐标 \((x_t,y_t)\) 可以这样计算出来:

\[\begin{align} x_t &= \frac{y_2-y_1+x_1\tan\theta_1-x_2\tan\theta_2}{\tan\theta_1-\tan\theta_2}, \\ y_t &= (x_t - x_1)\tan\theta_1 + y_1 \\&= (x_t - x_2)\tan\theta_2 + y_2 \end{align} \]

这个算法有一个硬伤,那就是 \(\theta_1\)\(\theta_2\) 不能等于 \((2n+1)\frac{\pi}{2}\),其中 \(n\in\mathbb{Z}\)

代码

def calc(p1, theta1, p2, theta2):import math#p1 = (0, 0)#theta1 = 0#p2 = (0, 0)#theta2 = 0x1 = p1[0]y1 = p1[1]x2 = p2[0]y2 = p2[1]theta1rad = math.radians(theta1)theta2rad = math.radians(theta2)tantheta1 = math.tan(theta1rad)tantheta2 = math.tan(theta2rad)x = (y2 - y1 + x1 * tantheta1 - x2 * tantheta2) / (tantheta1 - tantheta2)y = (x - x1) * tantheta1 + y1return (x, y)

算法推导

在前文所说的条件下,
\(P_0\) 为原点方位角为 \(\theta_0\) 的射线上的点的表达式为:

\[y=(x-x_0)\tan\theta_0+y_0 \]

同理,对于 \(P_1\)\(P_2\) 及其对应方位角 \(\theta_1\)\(\theta_2\),有:

\[\begin{equation} \label{y1} y=(x-x_1)\tan\theta_1+y_1 \end{equation} \]

\[\begin{equation} \label{y2} y=(x-x_2)\tan\theta_2+y_2 \end{equation} \]

当两条射线交于点 \(P_t\) 时,让式 \ref{y1} 等于式 \ref{y2},代入 \(x_t\)\(y_t\),有:

\[\begin{align} (x_t-x_1)\tan\theta_1+y_1 &= (x_t-x_2)\tan\theta_2+y_2 \\ x_t\tan\theta_1 - x_1\tan\theta_1 + y_1 &= x_t\tan\theta_2 - x_2\tan\theta_2 + y_2 \\ x_t(\tan\theta_1 - \tan\theta_2) &= x_1\tan\theta_1 - y_1 - x_2\tan\theta_2 + y_2 \\ x_t &= \frac{x_1\tan\theta_1 - y_1 - x_2\tan\theta_2 + y_2}{\tan\theta_1 - \tan\theta_2} \end{align} \]

\[\begin{align} y_t &= (x_t - x_1)\tan\theta_1 + y_1 \\&= (x_t - x_2)\tan\theta_2 + y_2 \end{align} \]

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

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

相关文章

雅思培训班怎么选?2025高分上岸攻略+避坑指南

雅思培训班怎么选?2025高分上岸攻略+避坑指南备考雅思,就像一场没有硝烟的战争,选对培训机构,无疑是为自己找到了一位强有力的 “军师”。在这鱼龙混杂的培训市场中,如何一眼挑中最适合自己的机构呢?别急,先静下…

【9章】AI训练师 零基础入门与实战

【9章】AI训练师 零基础入门与实战 学习地址:……/s/160v0H2PsGoWnl46efa3Y6w 提取码:8blp 人工智能训练师,这个听起来充满科技感的职业,本质上是一群“数字时代的牧羊人”。他们不像算法工程师那样编写复杂的代码…

2025年杭州翻译服务机构推荐榜:东瑞翻译、杭州翻译服务机构哪家好、杭州翻译服务机构推荐、多领域语言解决方案的可靠选择

随着全球化商业合作深化、跨境交流频繁及企业出海需求激增,专业翻译服务已成为打破语言壁垒、保障跨文化沟通效率的核心支撑。2025 年,杭州翻译市场规模持续扩大,但行业内服务商在专业深度、技术能力、服务覆盖及合…

独占锁和共享锁唤醒机制

目录独占锁和共享锁唤醒机制精确总结独占锁(EXCLUSIVE)共享锁(SHARED)独占锁的正确顺序:共享锁的正确顺序:核心区别可视化独占锁(接力赛)共享锁(广播链)代码验证关键区别表格总结 独占锁和共享锁唤醒机制 精…

个人学习---25.12.9

markdown简单学习这是我markdown的开始,我将把他作为我的ysyx笔记 markdon记录标题使用就表示几级几级,很简单不多说文本格式 ####### 斜体文本 粗体文本 粗斜体文本 分隔线 可以使用---来表示代码块int main6(void)…

大模型完整架构

后端模型:利用ollama平台模型 前端界面:利用streamlit框架搭建用户界面,streamlit是一个简单易用的python库 对话交互:用户通过strealit界面输入文本,聊天机器人基于模型对输入内容处理并恢复展示在界面上 模型调…

iOS 知识点 - 一篇文章带你串通「操作系统 内存模型 文件系统」

本文重点讲解 iOS 操作系统,Linux/Windows 操作系统待到后续新开文章专门讲解。总览 目标:一篇文章理清 iOS 三个紧密相关但层次不同的事物:操作系统(iOS / Darwin):谁在管理 “进程、线程、虚拟内存页、文件描述…

2025年12月天津金蝶软件代理商最新推荐:天津鹏越软件,金蝶云星空、金蝶云星晨、金蝶云星翰、助力企业高效落地ERP系统与全场景管理升级

随着数字经济加速渗透,企业对专业化、定制化管理软件的需求持续攀升,尤其是在生产流程优化、财务精益化管控、多组织协同等核心场景中,优质的数字化解决方案已成为企业提升竞争力的关键。2025 年,天津地区企业数字…

102302114_比山布努尔兰_作业4

作业1 熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。 作业代码点击查看代…

2025年12月济南艺考画室最新推荐:济南大道画室,济南艺考画室、济南画室哪家好、济南画室推荐、山东美术艺考培训、山东画室个性化教学新标杆

随着美术艺考竞争日益激烈、教学标准化要求提升及学生个性化发展需求增加,优质画室已从大城市集中逐步扩展至地方深耕,2025年艺考培训市场规模预计持续增长。但市场扩张也带来画室教学水平、师资力量、升学成果参差不…

记一次磁盘占满的问题

说明 之前搭建的lobehub/lobe-chat网页AI问答突然不能用了。 于是重启docker遇到: yangx@ak:~$ docker run 23576ea8e726 docker: Error response from daemon: mkdir /var/lib/docker/overlay2/70e1042a088ffe1a6d26…

Redis提供的原子性命令

目录Redis提供的原子性命令主要类别的原子性命令:1. 字符串(String)原子操作2. 列表(List)原子操作3. 集合(Set)原子操作4. 哈希(Hash)原子操作5. 有序集合(Sorted Set)原子操作6. 位图(Bitmap)原子操作7…

多业态连锁环境管理系统:AI + 机器人闭环,坪效提升 16%

门店环境本是沉默的,却在无声处酿成大祸:高峰无人知地面湿滑,夜间无人见灯闪,雨天无人管玻璃污——2025年,环境设施异常导致的综合损失平均占运营成本19%,保洁+维修双线超支,数据孤岛让决策如盲。全场景痛点全面…

2025年12月室内水上乐园厂家推荐:山东汇川,儿童水上乐园、大型水上乐园、主题水上乐园、室外水上乐园、恒温泳池、室 泳池、全场景适配新标杆

随着文旅产业升级、消费需求多元化及健康理念普及,水上游乐与泳池设备行业迎来快速发展期,2025 年市场规模预计持续扩大。但市场增长也带来厂商产品质量、场景适配性、服务专业性参差不齐的问题,企业及投资者在选购…

2025雅思培训班怎么选?这5家高性价比机构帮你高效提分

2025雅思培训班怎么选?这5家高性价比机构帮你高效提分一、雅思选课三大痛点解析:为什么你总在无效对比? 在雅思备考的漫漫征途中,选对培训班就如同找到了一把开启成功之门的钥匙。然而,面对市场上琳琅满目的雅思培…

实用指南:「腾讯云NoSQL」技术之向量数据库篇:自研分布式向量数据库,实现毫秒级时序一致备份的挑战和实践

实用指南:「腾讯云NoSQL」技术之向量数据库篇:自研分布式向量数据库,实现毫秒级时序一致备份的挑战和实践2025-12-09 20:11 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap:…

Semaphore、CountDownLatch、ReentrantLock使用场景简单说说

目录Semaphore、CountDownLatch、ReentrantLock使用场景简单说说1. Semaphore(信号量)2. CountDownLatch(倒计时门闩)3. ReentrantLock(可重入锁)对比总结简单记忆三个并发工具的简单示例1. Semaphore 示例 - 停…

LATTICE HW-USBN-2B 高速下载器凭什么是销冠

LATTICE HW-USBN-2B 高速下载器凭什么是销冠 1). 支持windows7,Windows10 操作系统,两个操作系统非常稳定不断线。2). 支持JTAG 模式,速度快,最高30Mb/s,调试serdes core,不会像hw-usbn-2a出现错误。如这种错误…

py-lambda-map-list随笔

py-lambda-map-list随笔 匿名函数lambda lambda 表达式用于创建 小型、匿名 的单行函数。 语法:lambda arguments: expression很方便的map()用于及其方便地映射 把相同的操作(如lambda表达式)映射到后者(如列表上)…

2025年12月水上乐园设备厂家最新推荐:昊至泉充气水上乐园设备、室内水上乐园设备、户外水上乐园设备、大型水上乐园设备、漂流河水上乐园设备、打造安全创新个性化水上娱乐新标准

随着全民休闲娱乐需求增长及文旅产业升级,水上乐园作为夏季热门旅游目的地,其设备安全性、创新性及个性化设计已成为投资运营者的核心考量。2025年,市场对水上乐园设备的要求已从基础功能转向安全高效、主题鲜明、适…