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

【quantity】7 角度单位模块(angle.rs)

代码定义了一个用于处理不同角度单位的Rust模块,支持弧度(radians)、度(degrees)和哥恩(gradians/gons)之间的转换,以及带SI前缀的弧度单位(如毫弧度、微弧度)。

主要组成部分

  1. 类型定义
    通用角度类型
  • Angle<V, P = NoPrefix>: 带SI前缀的通用弧度角度类型

    • V: 值类型(f32, f64等)

    • P: SI前缀类型(无前缀、毫、微等)

具体角度类型

  • Radians: 弧度(无前缀)

  • Milliradians: 毫弧度(10^-3弧度)

  • Microradians: 微弧度(10^-6弧度)

  • Degrees: 度(°)

  • Gradians: 哥恩(百分度)

  1. 结构体实现
    Degrees和Gradians结构体
  • 都实现了new()构造函数和into_inner()解构方法

  • 通过derive宏自动实现了:

    • Debug, Clone, Copy, PartialEq

    • Add, Sub, AddAssign, SubAssign (加减运算)

  1. 转换实现
    主要转换关系:
  2. 度 ↔ 弧度
  • 公式: rad = deg × (π/180)

  • 公式: deg = rad × (180/π)

  1. 哥恩 ↔ 弧度
  • 公式: rad = gon × (π/200)

  • 公式: gon = rad × (200/π)

  1. 度 ↔ 哥恩
  • 公式: gon = deg × (10/9)

  • 公式: deg = gon × (9/10)

  1. 毫弧度/微弧度 ↔ 弧度
  • 简单的前缀转换(1000倍或1,000,000倍关系)
  1. 单元测试
    包含了对各种角度类型和转换的测试用例:
  • 构造函数测试

  • 基本转换测试

  • 往返转换测试(确保转换的对称性)

  • 算术运算测试

使用示例

// 创建角度值
let degrees = Degrees::new(180.0);
let radians: Radians<f64> = degrees.into();  // 转换为弧度
assert_eq!(radians.into_inner(), std::f64::consts::PI);// 哥恩转换
let gradians = Gradians::new(200.0);
let radians: Radians<f64> = gradians.into();
assert_eq!(radians.into_inner(), std::f64::consts::PI);// 毫弧度
let mrad = Milliradians::new(1000.0);
let rad: Radians<f64> = mrad.into();
assert_eq!(rad.into_inner(), 1.0);

这个模块提供了类型安全的角度单位表示和转换,适合需要精确角度计算的科学和工程应用。

相关文章:

  • 论系统安全架构设计及其应用
  • Vibe Coding 新时代:AI 辅助编程完全指南
  • 从融智学视域快速回顾世界历史和主要语言文字最初历史证据(列表对照分析比较)
  • JavaScript中的AES加密与解密:原理、代码与实战
  • 一篇文章看懂web服务
  • C与指针4——指针
  • 04 基于 STM32 的时钟展示程序
  • js单调栈解题模板
  • [UVM]UVM中reg_map的作用及多个rem_map的使用案例
  • QNAP Duplicati 备份 123云盘
  • Learning vtkjs之Cutter
  • Spring AI 实战:第一章、Spring AI入门之DeepSeek调用
  • 深入解析高并发场景下分布式缓存优化实战:从原理到性能提升
  • MIT6.S081-lab8
  • 创建第一个简单cesium程序
  • Vscode+git笔记
  • 什么是 Redis?
  • PCIe | TLP | 报头 / 包格式 / 地址转换 / 配置空间 / 寄存器 / 配置类型
  • 叠层阻抗线框
  • MNN 支持 DeepSeekVL
  • 莫斯科一机场实施临时限制措施
  • 经济日报头版评论:矢志奋斗筑梦青春中国
  • 竞彩湃|拜仁冲冠战役或有冷门,大巴黎留力欧冠半决赛
  • 三亚回应“游客骑摩托艇出海遇暴雨”:未失联,已引导申请先行赔付
  • 从“土”到“潮”,唢呐何以“圈粉”年轻人
  • 山西太原一小区发生爆炸,太原:进一步深刻汲取教训