当前位置: 首页 > news >正文

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

前言

之前看 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.jsqmd.com/news/69324/

相关文章:

  • 雅思培训班怎么选?2025高分上岸攻略+避坑指南
  • 【9章】AI训练师 零基础入门与实战
  • 2025年杭州翻译服务机构推荐榜:东瑞翻译、杭州翻译服务机构哪家好、杭州翻译服务机构推荐、多领域语言解决方案的可靠选择
  • Semaphore、CountDownLatch、ReentrantLock使用场景简单说说
  • 独占锁和共享锁唤醒机制
  • 个人学习---25.12.9
  • 大模型完整架构
  • iOS 知识点 - 一篇文章带你串通「操作系统 内存模型 文件系统」
  • 2025年12月天津金蝶软件代理商最新推荐:天津鹏越软件,金蝶云星空、金蝶云星晨、金蝶云星翰、助力企业高效落地ERP系统与全场景管理升级
  • 102302114_比山布努尔兰_作业4
  • 2025年12月济南艺考画室最新推荐:济南大道画室,济南艺考画室、济南画室哪家好、济南画室推荐、山东美术艺考培训、山东画室个性化教学新标杆
  • 记一次磁盘占满的问题
  • Redis提供的原子性命令
  • 多业态连锁环境管理系统:AI + 机器人闭环,坪效提升 16%
  • 2025年12月室内水上乐园厂家推荐:山东汇川,儿童水上乐园、大型水上乐园、主题水上乐园、室外水上乐园、恒温泳池、室 泳池、全场景适配新标杆
  • 2025雅思培训班怎么选?这5家高性价比机构帮你高效提分
  • 2025年12月水上乐园设备厂家最新推荐:昊至泉充气水上乐园设备、室内水上乐园设备、户外水上乐园设备、大型水上乐园设备、漂流河水上乐园设备、打造安全创新个性化水上娱乐新标准
  • 实用指南:「腾讯云NoSQL」技术之向量数据库篇:自研分布式向量数据库,实现毫秒级时序一致备份的挑战和实践
  • py-lambda-map-list随笔
  • 杂题选记
  • 2025年12月铝材厂家推荐榜:廊坊国美铝业,工业铝材、门窗铝材、3C铝材、通用铝材、多领域铝材定制与绿色生产标杆
  • Qt 文本转语言(QTextToSpeech类)详解 - 实践
  • AWS发布网络扫描指南:构建更安全云环境的守则
  • # 题解#洛谷P2880 Balanced Lineup #ST表#
  • 2025年12月包头保洁公司最新推荐:信达家政,包头保洁开荒、包头高空清洗保洁、包头保姆公司、包头保姆家政、包头保姆月嫂、包头保姆护工、服务品质新标准
  • 机器视觉测量与建模
  • 2025最值得报的雅思封闭班:高性价比/冲高分/打基础三类优选清单
  • 为什么会诞生流形的概念?
  • [Java EE] 多线程 -- 初阶(1) - 详解
  • 2025年12月丝杆升降机标杆厂家最新推荐:德州德特机械,螺旋升降机、sjb螺旋升降机、zimm螺旋升降机、SJA螺旋升降机、联动丝杆升降机、螺旋丝杆升降机、专注精密传动新标准