提供电子商务网站建设外包服务的企业网站建设还能赚钱吗

张小明 2026/1/10 12:40:00
提供电子商务网站建设外包服务的企业,网站建设还能赚钱吗,俄语网站模板,交换友情链接的网站标准是什么这篇文章的目标是基于C和Python#xff0c;使用一些常用的库#xff0c;将旋转矩阵#xff0c;齐次变换矩阵#xff0c;欧拉角#xff0c;四元数等之间进行两两的相互转换#xff0c;并能够作为长期可复用的库来进行使用 目标#xff1a; 统一约定#xff08;坐标系、欧…这篇文章的目标是基于C和Python使用一些常用的库将旋转矩阵齐次变换矩阵欧拉角四元数等之间进行两两的相互转换并能够作为长期可复用的库来进行使用目标统一约定坐标系、欧拉顺序、四元数形式等C基于 Eigen机器人/控制/SLAM 领域最常用Python基于 NumPy SciPy Rotation可选 ROS 的 tf但先给通用版提供一组简洁、可直接粘贴的函数带短注释方便做成你的“姿态库”。你可以直接把“核心约定 代码段”收进自己的项目中。0. 全局统一约定极其重要下面所有 C / Python 代码都遵循同一套约定右手坐标系x 轴前y 轴左z 轴上典型移动机器人/航空/SLAM 约定欧拉角定义roll绕 x 轴旋转pitch绕 y 轴旋转yaw绕 z 轴旋转采用Z-Y-X 顺序yaw, pitch, roll即先绕 xroll再绕 ypitch再绕 zyaw的本体旋转等价于旋转矩阵R Rz(yaw) * Ry(pitch) * Rx(roll)四元数形式使用数学常用表示q (w, x, y, z)内部库如 Eigen / SciPy 可能用(x, y, z, w)我们在封装函数里统一成(w, x, y, z)接口。旋转矩阵 R3×3 正交矩阵列向量为坐标轴在世界坐标中的方向满足v_world R * v_body列向量右乘的习惯齐次变换矩阵 T (4×4)T 表示从 A 坐标系到 B 坐标系的刚体变换形式T[Rt01] T \begin{bmatrix} R t \\ 0 1 \end{bmatrix}T[R0​t1​]向量变换pBhomTBA pAhom p_B^{hom} T_{BA} \, p_A^{hom}pBhom​TBA​pAhom​即TBAT_{BA}TBA​表示“从 A 到 B”的变换这一点你可以按自己项目统一命名。1. C 版基于 Eigen的统一接口1.1 头文件示例pose_utils_eigen.h#pragmaonce#includeEigen/Core#includeEigen/Geometry// 约定// - 欧拉角顺序 Z-Y-XR Rz(yaw) * Ry(pitch) * Rx(roll)// - 欧拉角单位弧度// - 四元数接口形式 (w, x, y, z)// - 旋转矩阵 R: 3x3, v_world R * v_body// - 齐次变换 T: 4x4 [R t; 0 1]// -----------------------------// 基本类型别名// -----------------------------usingVec3Eigen::Vector3d;usingMat3Eigen::Matrix3d;usingMat4Eigen::Matrix4d;usingQuatEigen::Quaterniond;// 内部存 (x, y, z, w)// // R - 欧拉角// // 欧拉角 - 旋转矩阵// 输入: roll, pitch, yaw (rad)// 输出: R Rz(yaw) * Ry(pitch) * Rx(roll)inlineMat3euler_to_rot(doubleroll,doublepitch,doubleyaw){Mat3 R;REigen::AngleAxisd(yaw,Vec3::UnitZ())*Eigen::AngleAxisd(pitch,Vec3::UnitY())*Eigen::AngleAxisd(roll,Vec3::UnitX());returnR;}// 旋转矩阵 - 欧拉角// 返回: (roll, pitch, yaw)inlineEigen::Vector3drot_to_euler(constMat3R){// eulerAngles(2,1,0) - [yaw, pitch, roll] for ZYXEigen::Vector3d eulerR.eulerAngles(2,1,0);doubleyaweuler[0];doublepitcheuler[1];doublerolleuler[2];returnEigen::Vector3d(roll,pitch,yaw);}// // R - 四元数// // 四元数(qw,qx,qy,qz) - 旋转矩阵inlineMat3quat_to_rot(doublew,doublex,doubley,doublez){Quatq(x,y,z,w);// Eigen 构造: (x, y, z, w)q.normalize();returnq.toRotationMatrix();}// 旋转矩阵 - 四元数(qw,qx,qy,qz)inlineEigen::Vector4drot_to_quat(constMat3R){Quatq(R);q.normalize();returnEigen::Vector4d(q.w(),q.x(),q.y(),q.z());}// // 欧拉角 - 四元数// // 欧拉角 - 四元数(qw,qx,qy,qz)inlineEigen::Vector4deuler_to_quat(doubleroll,doublepitch,doubleyaw){Mat3 Reuler_to_rot(roll,pitch,yaw);returnrot_to_quat(R);}// 四元数(qw,qx,qy,qz) - 欧拉角(roll,pitch,yaw)inlineEigen::Vector3dquat_to_euler(doublew,doublex,doubley,doublez){Mat3 Rquat_to_rot(w,x,y,z);returnrot_to_euler(R);}// // 齐次变换 T - (R, t)// // (R, t) - 齐次变换矩阵 T// T [R t; 0 1]inlineMat4rt_to_T(constMat3R,constVec3t){Mat4 TMat4::Identity();T.topLeftCorner3,3()R;T.topRightCorner3,1()t;returnT;}// 齐次变换矩阵 T - (R, t)inlinevoidT_to_rt(constMat4T,Mat3R,Vec3t){RT.topLeftCorner3,3();tT.topRightCorner3,1();}// // T - (欧拉角, t)// // (欧拉角, t) - TinlineMat4euler_t_to_T(doubleroll,doublepitch,doubleyaw,doubletx,doublety,doubletz){Mat3 Reuler_to_rot(roll,pitch,yaw);Vec3t(tx,ty,tz);returnrt_to_T(R,t);}// T - (欧拉角, t)// 输出: roll,pitch,yaw 与 tx,ty,tzinlinevoidT_to_euler_t(constMat4T,doubleroll,doublepitch,doubleyaw,doubletx,doublety,doubletz){Mat3 R;Vec3 t;T_to_rt(T,R,t);Eigen::Vector3d rpyrot_to_euler(R);rollrpy[0];pitchrpy[1];yawrpy[2];txt[0];tyt[1];tzt[2];}// // T - (四元数, t)// // (四元数, t) - TinlineMat4quat_t_to_T(doublew,doublex,doubley,doublez,doubletx,doublety,doubletz){Mat3 Rquat_to_rot(w,x,y,z);Vec3t(tx,ty,tz);returnrt_to_T(R,t);}// T - (四元数, t)inlinevoidT_to_quat_t(constMat4T,doublew,doublex,doubley,doublez,doubletx,doublety,doubletz){Mat3 R;Vec3 t;T_to_rt(T,R,t);Eigen::Vector4d qrot_to_quat(R);wq[0];xq[1];yq[2];zq[3];txt[0];tyt[1];tzt[2];}你可以把这整个头文件直接收录到自己的 C 工程中作为公共工具。2. Python 版NumPy SciPy Rotation假设你可以安装 SciPy。如果暂时没有 SciPy也可以只用 NumPy 手写公式可以再补。2.1 依赖安装pipinstallnumpy scipy2.2 模块示例pose_utils.py 统一的姿态/位姿转换工具 约定: - 右手系 - 欧拉角(roll, pitch, yaw), 旋转顺序 Z-Y-X: R Rz(yaw) * Ry(pitch) * Rx(roll) - 四元数接口形式 (w, x, y, z) - 旋转矩阵 R: shape (3,3), v_world R v_body - 齐次变换 T: shape (4,4) [R t; 0 1] importnumpyasnpfromscipy.spatial.transformimportRotationasR_# 避免与变量名 R 冲突# # R - 欧拉角# defeuler_to_rot(roll:float,pitch:float,yaw:float)-np.ndarray: 欧拉角 - 旋转矩阵 输入单位: 弧度 顺序: Z-Y-X (yaw, pitch, roll) # SciPy: from_euler(zyx, [z, y, x]) [yaw, pitch, roll]rR_.from_euler(zyx,[yaw,pitch,roll])returnr.as_matrix()# (3,3)defrot_to_euler(R:np.ndarray)-np.ndarray: 旋转矩阵 - 欧拉角 返回: [roll, pitch, yaw] (弧度) Rnp.asarray(R,dtypefloat).reshape(3,3)rR_.from_matrix(R)yaw,pitch,rollr.as_euler(zyx)# 对应 Z-Y-Xreturnnp.array([roll,pitch,yaw])# # R - 四元数# defquat_to_rot(q:np.ndarray)-np.ndarray: 四元数 - 旋转矩阵 q: [w, x, y, z] 返回: R (3,3) qnp.asarray(q,dtypefloat).flatten()w,x,y,zq rR_.from_quat([x,y,z,w])# SciPy 使用 [x,y,z,w]returnr.as_matrix()defrot_to_quat(R:np.ndarray)-np.ndarray: 旋转矩阵 - 四元数 返回: [w, x, y, z] Rnp.asarray(R,dtypefloat).reshape(3,3)rR_.from_matrix(R)x,y,z,wr.as_quat()# SciPy 返回 [x,y,z,w]returnnp.array([w,x,y,z])# # 欧拉角 - 四元数# defeuler_to_quat(roll:float,pitch:float,yaw:float)-np.ndarray: 欧拉角 - 四元数 返回: [w, x, y, z] Reuler_to_rot(roll,pitch,yaw)returnrot_to_quat(R)defquat_to_euler(q:np.ndarray)-np.ndarray: 四元数 - 欧拉角 q: [w, x, y, z] 返回: [roll, pitch, yaw] Rquat_to_rot(q)returnrot_to_euler(R)# # 齐次变换 T - (R, t)# defrt_to_T(R:np.ndarray,t:np.ndarray)-np.ndarray: (R, t) - 齐次变换矩阵 T R: (3,3) t: (3,) 返回: T (4,4) [R t; 0 1] Rnp.asarray(R,dtypefloat).reshape(3,3)tnp.asarray(t,dtypefloat).reshape(3,)Tnp.eye(4)T[:3,:3]R T[:3,3]treturnTdefT_to_rt(T:np.ndarray): 齐次变换矩阵 T - (R, t) 返回: R(3,3), t(3,) Tnp.asarray(T,dtypefloat).reshape(4,4)RT[:3,:3]tT[:3,3]returnR,t# # T - (欧拉角, t)# defeuler_t_to_T(roll:float,pitch:float,yaw:float,tx:float,ty:float,tz:float)-np.ndarray: (欧拉角, t) - T Reuler_to_rot(roll,pitch,yaw)tnp.array([tx,ty,tz],dtypefloat)returnrt_to_T(R,t)defT_to_euler_t(T:np.ndarray): T - (欧拉角, t) 返回: roll, pitch, yaw, tx, ty, tz R,tT_to_rt(T)roll,pitch,yawrot_to_euler(R)tx,ty,tztreturnroll,pitch,yaw,tx,ty,tz# # T - (四元数, t)# defquat_t_to_T(q:np.ndarray,t:np.ndarray)-np.ndarray: (四元数, t) - T q: [w, x, y, z] t: (3,) Rquat_to_rot(q)returnrt_to_T(R,t)defT_to_quat_t(T:np.ndarray): T - (四元数, t) 返回: q: [w, x, y, z], t: (3,) R,tT_to_rt(T)qrot_to_quat(R)returnq,t3. 转换关系一览思维导图式在这个 C / Python 库中实际上是围绕几条“主干”做封装欧拉角 ⇄ 旋转矩阵四元数 ⇄ 旋转矩阵(R, t) ⇄ T其他组合例如欧拉角 ⇄ 四元数通过欧拉角 - R - 四元数/四元数 - R - 欧拉角(欧拉角, t) ⇄ T通过欧拉角 - Rrt ⇄ T(四元数, t) ⇄ T通过四元数 - Rrt ⇄ T这样一方面接口清晰另一方面将来如果你要替换内部实现比如用手写三角公式、用别的库只要保证每条主干的语义不变即可。4. 建议的项目结构与使用方式你可以按如下方式组织你的“长期自用库”C目录示例include/ pose_utils_eigen.h src/ # 不一定需要单独 cpp全部 inline 在头文件也可以 tests/ test_pose_utils.cpp在项目中使用#includepose_utils_eigen.hintmain(){doubleroll0.1,pitch0.2,yaw0.3;Eigen::Matrix3d Reuler_to_rot(roll,pitch,yaw);Eigen::Vector4d qrot_to_quat(R);Eigen::Matrix4d Teuler_t_to_T(roll,pitch,yaw,1.0,2.0,3.0);return0;}Python目录示例pose_utils/ __init__.py pose_utils.py tests/ test_pose_utils.py使用frompose_utils.pose_utilsimporteuler_to_quat,quat_to_euler,euler_t_to_T roll,pitch,yaw0.1,0.2,0.3qeuler_to_quat(roll,pitch,yaw)Teuler_t_to_T(roll,pitch,yaw,1.0,2.0,3.0)5. 后续可以扩展的方向预留以后你可以在这套基础上继续加不同欧拉顺序例如 XYZ、ZXY 等在函数名中显式写明比如euler_xyz_to_rot。度/弧度转换提供*_deg版本或在函数里增加参数degreesFalse/True。与 ROS tf / tf2 的互操作在 C / Python 分别写from_tf_quat/to_tf_quat做(x,y,z,w)与(w,x,y,z)的适配。转移矩阵方向区分例如T_ab、T_ba一套函数对逆变换进行封装。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站写代码好还是模板烟台外贸网站建设

第一章:AI自动化失控风险高发?Open-AutoGLM敏感操作确认机制让你稳操胜券在AI驱动的自动化系统中,模型执行敏感操作(如数据库删除、权限变更或大规模数据导出)时,若缺乏有效确认机制,极易引发不…

张小明 2026/1/2 12:23:20 网站建设

纯静态网站seo简单电子商务网站建设

硬件镶嵌细分技术的应用 引言 镶嵌细分是指用一个或多个几何形状平铺或分割平面的过程,比如制作马赛克。在Direct3D 11中,该过程是指根据特定算法和镶嵌因子将几何图形分割成更小的三角形。硬件镶嵌细分功能在Shader Model 5.0中可用,因此硬件必须支持Direct3D 11_0或更高…

张小明 2026/1/2 12:23:33 网站建设

h5手机网站开发网上找装修设计

你是否曾在跨语言系统集成中感到束手无策?是否因为AMQP协议的复杂性而望而却步?今天,让我们一起探索RabbitMQ中那个被低估的宝藏——STOMP协议。在消息传递领域,STOMP就像是一位精通多国语言的沟通专家,让不同技术栈的…

张小明 2025/12/25 20:56:18 网站建设

网页设计推荐网站学做网站要学什么

WSL2下本地部署Langchain-Chatchat全记录 在企业级AI应用日益普及的今天,越来越多团队开始关注“数据不出内网”的私有化智能问答系统。开源项目 Langchain-Chatchat 正是这一需求的理想解决方案——它支持文档上传、语义检索与本地推理,完全避免敏感信…

张小明 2025/12/25 13:40:17 网站建设

联赛网站建设不足网站如何做搜索引擎优化

在数字化转型加速的2025年,全球企业正面临前所未有的运维挑战。据Gartner最新报告显示,超过65%的IT故障源于存储系统异常,而传统监控工具因缺乏智能分析能力,导致平均故障修复时间长达4.2小时。在此背景下,智能运维&am…

张小明 2025/12/26 0:44:26 网站建设

推广网站的方式顺义做网站

绩效反馈与辅导是绩效管理体系中的核心环节。**要实现绩效反馈的真正价值,关键在于构建科学的沟通流程与辅导机制,使员工在理解反馈的同时获得成长的动力。**绩效管理不只是评分与总结,更重要的是通过有效的反馈与辅导,帮助员工发…

张小明 2025/12/25 21:48:52 网站建设