cpp中atan与atan2的对比

核心差异:atan 是单参数、无象限区分、范围窄;atan2 是双参数、有象限区分、范围全,且无需提前做除法;
工程选择:SLAM / 机器人 / 图形学等需要精准计算角度的场景,优先用 atan2(y, x);atan 仅适用于已知角度在 [-90°, 90°] 的简单场景;
代码意义:atan2 是四元数转角度轴代码中角度计算 “准确、稳定” 的关键,避免了 atan 的除零、象限丢失、精度损失问题。

点击查看代码
// 第一步:先定义宏(必须在#include <cmath>之前)
#define _USE_MATH_DEFINES
#include<iostream>
#include<cmath>
#include<iomanip> //用于格式化输出
#include<string>
// 弧度转角度的辅助函数
double rad2deg(double rad) {return rad * 180 / M_PI;
}
int main() {//定义四个象限的测试点(覆盖不同符号组合)double points[4][2] = {{1,1},//第一象限{-1,1},//第二象限{-1,-1},//第三象限};std::string quadrants[4] = { "第一象限","第二象限", "第三象限", "第四象限" };std::cout << std::fixed << std::setprecision(2);std::cout << "======atan vs atan2 对比=========\n";std::cout << "象限\t坐标(x,y)\t斜率(y/x)\tatan(斜率)(°)\tatan2(y,x)(°)\t实际角度(°)\n";std::cout << "---------------------------------------------\n";for (int i = 0; i < 4; ++i){double x = points[i][0];double y = points[i][1];double slope = y / x;// 计算斜率(atan的输入)double atan_result = rad2deg(atan(slope));//atan结果(角度)double atan2_result = rad2deg(atan2(y, x));//atan2计算结果(角度)double actual_angle = atan2_result;//实际角度就是atan2的结果std::cout << quadrants[i] << "\t(" << x << "," << y << ")\t"<< slope << "\t\t" << atan_result << "\t\t"<< atan2_result << "\t\t" << actual_angle << "\n";}//特殊值测试:x=0(y轴方向)std::cout << "\n====特殊轴测试(x=0)=======\n";double x0 = 0, y1 = 1, y2 = -1;std::cout << "坐标(0,1):actan(1/0)->除零错误:atan(1.0)=" << rad2deg(atan2(y1, x0)) << "°n";std::cout << "坐标(0,-1):atan(-1/0) → 除零错误;atan2(-1,0) = " << rad2deg(atan2(y2, x0)) << "°\n";return 0;
}
运行结果:

image

关键结论:
第一 / 第四象限:atan 和 atan2 结果一致(因为斜率符号能反映角度);
第二 / 第三象限:atan 完全错判(比如第二象限实际 135°,atan 返回 - 45°),而 atan2 精准匹配实际角度;
特殊值(x=0):atan 直接失效(除零),atan2 能正确返回 90°/-90°。

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

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

相关文章

大模型训练全攻略:从并行技术到高效微调,一篇搞定大模型训练核心知识

文章系统介绍了大模型训练的基础知识&#xff0c;包括数据加载、模型加载及不同训练场景下的并行策略。重点详解了模型并行技术&#xff08;流水线并行、张量并行&#xff09;、ZeRO优化技术和高效微调方法&#xff08;Prefix Tuning、Prompt Tuning、LoRA&#xff09;&#xf…

Unity2022安装NewtonsoftJson?

在学习的时候发现教程使用的版本为2023&#xff0c;我的版本是2022&#xff0c;因为教程版本的差别&#xff0c;2023可以直接在包管理器搜索安装NewtonsoftJson&#xff0c;而2022版本不能直接通过包管理界面下载NewtonsoftJson&#xff0c;于是我进行了尝试&#xff0c;能够正…

【程序员必看】AI大模型产品经理薪资破90万,完整学习路线与实战案例

AI行业人才紧缺&#xff0c;AI产品经理尤为抢手&#xff0c;薪资可达90万。工作流程包括定义需求、数据准备、产品设计和上线反馈。大模型时代&#xff0c;企业对AIGC人才需求旺盛&#xff0c;薪资持续走高。学习大模型可掌握全栈工程能力&#xff0c;实现模型二次训练和微调&a…

从通用到垂类:大模型微调技术详解,PEFT方法全总结(建议收藏)

本文系统介绍了大模型参数高效微调(PEFT)的十大主流方法&#xff0c;包括添加派、适配器、软提示、缩放平移、重参数化、低秩分解、选择派、混合派、量化派和多任务派。2021-2023年是PEFT技术范式创立期&#xff0c;此后多为基础改进。工程应用中&#xff0c;Adapter/LoRA已足够…

2026年亚马逊卖家财税合规指南:深圳地区服务机构推荐,深圳信质远企服入选前三

跨境电商的浪潮中,财税合规是卖家稳健前行的基石。2026年,随着监管日益精细化,选择专业财税服务机构成为企业降本增效的关键。在深圳,一家专注于亚马逊账务处理的机构——深圳信质远企业服务有限公司(以下简称“信…

一键打开hosts文件所在目录

一键打开hosts文件所在目录脚本 场景 很多时候,程序员或者办公人员,需要改动hosts文件。但是,每次打开目录又很浪费时间。给非程序员文档说明改动hosts文件,但是他们并不熟悉。 脚本 在桌面,新建一键打开hosts文件…

巴菲特的企业文化建设:价值观驱动的组织

巴菲特的企业文化建设&#xff1a;价值观驱动的组织关键词&#xff1a;巴菲特、企业文化建设、价值观驱动、组织管理、伯克希尔哈撒韦摘要&#xff1a;本文深入探讨了巴菲特在企业文化建设方面的理念与实践&#xff0c;聚焦于以价值观驱动的组织构建。通过对巴菲特所领导的伯克…

线上摄影约拍系统小程序

目录 线上摄影约拍系统小程序摘要 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 线上摄影约拍系统小程序摘要 功能概述 线上摄影约拍系统小程序是一个基于移动端的服务平台&#xff0c;旨在连接摄影师与…

深入理解TCP协议:数据格式与核心机制解析

深入理解TCP协议&#xff1a;数据格式与核心机制解析 1. TCP协议概述1.1 TCP协议特点 2. TCP数据报文格式2.1 TCP头部字段详解2.2 控制标志位详解 3. TCP连接管理3.1 三次握手建立连接3.2 四次挥手释放连接 4. TCP可靠传输机制4.1 确认与重传4.2 滑动窗口 5. TCP拥塞控制6. TCP…

微服务一致性检查:如何确保服务数据同步

在微服务架构中,数据一致性是一个关键问题,特别是当服务之间需要共享或同步数据时。今天,我们将探讨如何使用Open Policy Agent(OPA)来编写策略,确保不同服务之间的数据一致性。以下是我们将要讨论的实例: 背景介绍 假设我们有一个系统,其中包含两个服务:serviceA 和…

PostgreSQL中的数组和JSON处理

在日常的数据库操作中,我们经常会遇到需要将数据库中的数据转换为JSON格式的情况,特别是在处理地理信息系统(GIS)或复杂的数据结构时。今天,我们来探讨一下如何在PostgreSQL中将数组数据转换为JSON格式,并且确保数组中的浮点数表示为完整的数值而不是科学计数法。 问题背…

网页爬虫与DOM操作:Puppeteer与Cheerio的实战应用

在现代网络应用开发中,网页爬虫和DOM操作是两个常见却又复杂的领域。通过Puppeteer和Cheerio,我们可以有效地抓取并处理网页内容。本文将介绍如何使用这两个工具来移除HTML中不包含文本的元素,并展示一个具体的实例。 背景介绍 Puppeteer是一个Node库,提供了高级API来控制…

异步编程的陷阱:理解JavaScript中的事件循环

在JavaScript编程中,异步操作是常见的挑战之一,尤其是当涉及到HTTP请求时。今天我们将通过一个实际的例子来探讨JavaScript中的异步编程问题,并解释如何解决它们。 问题描述 假设我们有一个名为login()的函数,它通过HTTP POST请求获取一个会话ID(SID),并将这个ID保存在一…

使用sed精准插入文本:保留空格的技巧

在处理文本文件时,我们常常会遇到需要在特定位置插入文本的需求。尤其是当我们希望保留原有文本的格式,包括空格和缩进时,事情会变得稍微复杂一些。本文将通过实例展示如何使用sed命令在文件中插入文本,同时确保插入的文本保持原有的空格。 背景介绍 假设我们有一个Shell…

深入解析Bash脚本执行中的常见坑

在编写和执行Bash脚本的过程中,程序员们经常会遇到一些看似简单但实际上并不直观的问题。今天,我们将通过一个实际的例子来深入探讨这些问题,特别是关于脚本执行环境的选择和影响。 问题背景 假设你有一个简单的Bash脚本,其目的在于从用户那里安全地获取密码输入。下面是…

推荐一份开题报告模板,利用AI工具高效完成学术研究的第一步准备工作。

AI开题报告工具对比速览 工具名称 核心功能 生成速度 适用场景 独特优势 AIbiye 全流程论文辅助 3-5分钟 从开题到定稿 深度学术逻辑构建 AIcheck 精准开题生成 2-3分钟 快速产出初稿 国内院校模板库 AskPaper 文献综述辅助 实时响应 研究现状分析 海量文献…

巴菲特的投资策略与资产管理

巴菲特的投资策略与资产管理 关键词:巴菲特、投资策略、资产管理、价值投资、长期投资、安全边际 摘要:本文深入剖析了巴菲特的投资策略与资产管理方法。从背景介绍入手,阐述了理解巴菲特投资理念的目的、预期读者和文档结构。详细讲解了核心概念,包括价值投资、长期投资等…

webtest project AI Test / aiceshi / Dify

s - Dify Dify 是一个 面向企业与开发者的开源大模型应用(LLM App)开发与运营平台。可以将其理解为: “用于快速构建、部署和运营 AI 应用(尤其是基于大语言模型的应用)的中台系统”。 一、Dify 的一句话定义 Di…

webtest project AI Test / aiceshi

s AI系统-大模型评估-知识体系分析 AI 系统测试导学 AI 应用功能测试 AI 应用安全测试 回归、成本与可观测性 Prompt 专项测试 RAG 专项测试序号 项目 描述 备注1 RAG 在企业AI中的地位RAG 架构拆解检索层测试目标召回…

元宇宙商业中AI大模型的应用架构:应用架构师的落地指南

元宇宙商业中AI大模型的应用架构:应用架构师的落地实战指南 标题备选 《元宇宙商业AI架构落地指南:应用架构师的核心方法论》 《从概念到营收:元宇宙+AI大模型的商业应用架构设计》 《元宇宙商业中的AI大模型架构:应用架构师必看的落地路径》 《拆解元宇宙商业AI架构:大模…