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

assimp中如何判断矩阵是否是单位矩阵

对于一个矩阵元素为浮点型的矩阵,你是否还在使每个元素跟1.0f或0.0f进行比较,如果这样,只能说你的结果不一定正确,那我们看看assimp中是如何做的。

template <typename TReal>
AI_FORCE_INLINE
bool aiMatrix4x4t<TReal>::IsIdentity() const {// Use a small epsilon to solve floating-point inaccuraciesconst static TReal epsilon = 10e-3f;return (a2 <= epsilon && a2 >= -epsilon &&a3 <= epsilon && a3 >= -epsilon &&a4 <= epsilon && a4 >= -epsilon &&b1 <= epsilon && b1 >= -epsilon &&b3 <= epsilon && b3 >= -epsilon &&b4 <= epsilon && b4 >= -epsilon &&c1 <= epsilon && c1 >= -epsilon &&c2 <= epsilon && c2 >= -epsilon &&c4 <= epsilon && c4 >= -epsilon &&d1 <= epsilon && d1 >= -epsilon &&d2 <= epsilon && d2 >= -epsilon &&d3 <= epsilon && d3 >= -epsilon &&a1 <= 1.f+epsilon && a1 >= 1.f-epsilon &&b2 <= 1.f+epsilon && b2 >= 1.f-epsilon &&c3 <= 1.f+epsilon && c3 >= 1.f-epsilon &&d4 <= 1.f+epsilon && d4 >= 1.f-epsilon);
}

这里是定义了一个模板函数,对于矩阵元素为整型和浮点型都是可行的。

需要引起我们注意的是极小值epsilon的定义:

    const static TReal epsilon = 10e-3f;
还有双向比较:

a2 <= epsilon && a2 >= -epsilon

a1 <= 1.f+epsilon && a1 >= 1.f-epsilon

从而保证了元素值为0.0f或1.0f。

http://www.lryc.cn/news/225580.html

相关文章:

  • 大数据Doris(二十):数据导入(Broker Load)介绍
  • Docker快速安装kafka
  • ChatGPT是什么?黑客试图淹没其服务
  • 【Java 进阶篇】Java Web 开发之 Listener 篇:ServletContextListener 使用详解
  • [C/C++]数据结构 链表OJ题:环形链表(如何判断链表是否有环)
  • c#流程控制
  • 基于SSM的学生二手书籍交易平台的设计与实现
  • xcode-工程设置
  • Milvus Cloud——LLM Agent 现阶段出现的问题
  • 百度智能云千帆大模型平台再升级,SDK版本开源发布!
  • 按键精灵中的数据类型转换
  • Golang Gorm 连接数据库
  • [C++随笔录] 红黑树
  • C 和 C++ 可变参数介绍
  • 【Git】gui图形化界面的使用、ssh协议以及idea集成Git
  • C语言之文件操作(详解版)
  • 解决mac 下 docker-compose 不是命令
  • test_sizeof
  • 100+ Windows运行命令大全,装B高手必备
  • iOS 设置图标和upload包时显示错误
  • 软件工程的舞台上,《人月神话》的美学纷飞
  • C现代方法(第19章)笔记——程序设计
  • Elasticsearch 作为 GenAI 缓存层
  • FPGA与STM32_FSMC总线通信实验
  • maven配置自定义下载路径,以及阿里云下载镜像
  • 01.单一职责原则
  • RT-Thread上部署TinyMaix推理框架,使MCU赋予AI能力
  • 设计模式 -- 策略模式(Strategy Pattern)
  • Spring Boot 集成 ElasticSearch
  • 百度智能云正式上线Python SDK版本并全面开源!