//计算向量角度 void calculateVectorAngle(double dir1[3], double dir2[3], double* sinVal, double* cosVal, double* tanVal) { // 计算点积 double dotProduct = 0.0; for (int i = 0; i < 3; ++i) { dotProduct += dir1[i] * dir2[i]; } // 计算向量模长 double mag1 = 0.0; double mag2 = 0.0; for (int i = 0; i < 3; ++i) { mag1 += dir1[i] * dir1[i]; mag2 += dir2[i] * dir2[i]; } mag1 = std::sqrt(mag1); mag2 = std::sqrt(mag2); // 计算余弦值 double cosValue = dotProduct / (mag1 * mag2); // 处理浮点精度问题,确保cos值在[-1, 1]范围内 if (cosValue > 1.0) cosValue = 1.0; if (cosValue < -1.0) cosValue = -1.0; // 计算正弦值 double sinValue = std::sqrt(1.0 - cosValue * cosValue); // 计算正切值 double tanValue; if (std::abs(cosValue) < 1e-10) // 避免除以零 { tanValue = (cosValue >= 0) ? 1e10 : -1e10; // 使用一个大数表示无穷大 } else { tanValue = sinValue / cosValue; } // 确定角度的正确象限 // 计算叉积的z分量(用于确定角度方向) double crossZ = dir1[0] * dir2[1] - dir1[1] * dir2[0]; // 如果叉积的z分量为负,说明角度大于180度,正弦值应为负 if (crossZ < 0) { sinValue = -sinValue; // 正切值也需要相应调整 if (std::abs(cosValue) >= 1e-10) { tanValue = sinValue / cosValue; } } // 通过指针将结果赋值给输出参数 *sinVal = sinValue; *cosVal = cosValue; *tanVal = tanValue; }C++计算两个向量之间的三角函数值(sin,cos,tan)
张小明
前端开发工程师
AI应用架构师如何优化自监督学习的训练时间?6个技巧
AI 应用架构师如何优化自监督学习的训练时间?6 个技巧 引言 主题介绍 在当今的人工智能领域,自监督学习(Self - supervised Learning)已经成为一种强大的机器学习范式。它能够从大规模无标签数据中自动学习特征,大大减…
【课程设计/毕业设计】基于python-CNN卷积神经网络对盆栽识别
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
西门子PLC模拟量滤波程序:1200与1500通用的实用功能块
西门子PLC模拟量滤波程序,西门子1200和1500通用,有电压或者电流或者热电偶选择,高低位和高高低低位报警,有滤波功能,非常实用的功能块,配有详细的注释,帮助快速理解。在自动化控制领域ÿ…
导师推荐9个一键生成论文工具,自考本科生轻松搞定毕业论文!
导师推荐9个一键生成论文工具,自考本科生轻松搞定毕业论文! AI 工具助力论文写作,自考学生不再焦虑 在当前的学术环境中,越来越多的自考本科生开始借助 AI 工具来辅助完成毕业论文。这些工具不仅能够有效降低 AIGC 率,…
Xshell简介与核心功能
Xshell高效运维实战技术文章大纲1. Xshell简介与核心功能Xshell的定义与适用场景(远程服务器管理、SSH客户端)核心功能:多标签管理、会话管理、脚本自动化、文件传输(Xftp集成)2. 基础配置优化会话属性设置(…
基于STM32的智能语音台灯(机智云)系统设计与实现
基于STM32的智能语音台灯(机智云)系统设计与实现摘要随着物联网技术的快速发展和智能家居市场的迅速扩张,传统照明设备已难以满足现代用户对智能化、便捷化和健康化的需求。本设计开发了一款基于STM32F103C8T6单片机的智能语音台灯系统,集成光敏电阻、超…