惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
小众软件
小众软件
Recent Announcements
Recent Announcements
博客园 - 三生石上(FineUI控件)
Security Archives - TechRepublic
Security Archives - TechRepublic
W
WeLiveSecurity
Cloudbric
Cloudbric
博客园 - 司徒正美
美团技术团队
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
PCI Perspectives
PCI Perspectives
宝玉的分享
宝玉的分享
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
Last Week in AI
Last Week in AI
S
Schneier on Security
N
News | PayPal Newsroom
B
Blog RSS Feed
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
S
Secure Thoughts
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
L
Lohrmann on Cybersecurity
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tenable Blog
S
Securelist
L
LangChain Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
InfoQ
H
Heimdal Security Blog
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
K
Kaspersky official blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs

博客园 - Fitz

windows server2012 安装IIS6服务,编译器错误消息: CS0016: 未能写入输出文件“c:\*\App_Code.*.dll”--“拒绝访问。 ” - Fitz ollama 安装好之后,是不是还需要关闭一些配置? 赫尔默特变化 A=0的情况 libaom 在ubuntu 上用鸿蒙OHOS编译 如何将带有线网卡和无线网卡的台式机作为网关/路由器 相机标定 像元大小(例如 1.4 µm × 1.4 µm)具体的含义和用途 物理焦距、像素焦距、像元与相机内参(fx, fy)的意义与作用 如何使用像素坐标和相机内参来计算夹角 HarmonyOS Next Native C++ 开发入门 Ubuntu中用HarmonyOS Next的SDK编译libsodium,并在DevEco Studio中加载运行.a库 windows 编译rustdesk The authenticity of host '[ssh.github.com]:443([*]:443)' can't be established. ED25519 key fingerprint is matlab 云台控制 根据图像中目标位置,控制望远镜/摄像头转向目标方向 无深度方向估计 Ubuntu 安装conda 拍摄目标:采集 1000 张多样化的图片,覆盖目标的各种环境、角度、光照、尺寸和位置,提高模型的泛化能力。 android APK的MD5值获取有效办法 3D 汽车模拟器 Three.js
测绘中2个角度相减对于跨360问题的算法总结
Fitz · 2026-04-21 · via 博客园 - Fitz

我们讨论的关键是角度差值是否应该规范化到 [-180°, 180°] 这个范围内。跨越360° 的真正意思是“顺时针还是逆时针旋转”,而不仅仅是差值是否大于180°。我们需要明确地理解两种情况:

  1. 差值大于 180° 时,表示应该逆时针转动,需要减去360°,以使差值进入 [-180°, 180°] 范围。
  2. 差值小于 -180° 时,表示应该顺时针转动,需要加上360°,同样为了使差值在 [-180°, 180°] 范围内。
  3. 让我们来看一下具体情况:

    1. 角度差计算的核心

    假设有两个角度,angle1angle2,我们计算其差值 diff = angle1 - angle2,然后做规范化。规范化就是:

    • 如果差值大于 180°,这意味着已经跨越了 360°,需要减去 360°。
    • 如果差值小于 -180°,这意味着已经跨越了 -360°,需要加上 360°。
    • 否则,差值本身已经在合理范围内,不需要修改。

    2. 举个例子

    例子 1:angle1 = 270°angle2 = 10°

    • 差值计算:

      diff=270∘−10∘=260∘\text{diff} = 270^\circ - 10^\circ = 260^\circdiff=27010=260
    • 由于差值 260° 大于 180°,应该规范化为 -100°,即将 260° 减去 360°:

      260∘−360∘=−100∘260^\circ - 360^\circ = -100^\circ260360=100

      这代表从 270° 逆时针转到 10° 的差值是 -100°,符合预期。

    例子 2:angle1 = 10°angle2 = 270°

    • 差值计算:

      diff=10∘−270∘=−260∘\text{diff} = 10^\circ - 270^\circ = -260^\circdiff=10270=260
    • 由于差值 -260° 小于 -180°,应该规范化为 100°,即将 -260° 加上 360°:

      −260∘+360∘=100∘-260^\circ + 360^\circ = 100^\circ260+360=100

      这代表从 270° 顺时针转到 10° 的差值是 100°,符合预期。

    • public double calculateAngleDifference(double angle1, double angle2) {
          // 计算原始角度差
          double diff = angle1 - angle2;
          
          // 规范化差值到[-180°, 180°]
          if (diff > 180) {
              diff -= 360;  // 角度差大于180°,跨越了360°
          } else if (diff < -180) {
              diff += 360;  // 角度差小于-180°,跨越了-360°
          }
          
          // 返回规范化后的差值
          return diff;
      }

      4. 示例

      • angle1 = 270°angle2 = 10°:计算 270° - 10° = 260°,然后规范化为 -100°
      • angle1 = 10°angle2 = 270°:计算 10° - 270° = -260°,然后规范化为 100°

      5. 总结

      • 正确的差值规范化:无论差值是正还是负,超出180°或-180°时,应该加/减360°,确保角度差落在 [-180°, 180°] 范围内。
      • 跨越360°的判断:是基于差值本身是否超过了180°,而不仅仅是判断是否“跨越”360°,需要对差值进行适当调整。