didierc..

6

对于你的第一个问题,我认为你的意思是"我如何代表",而不是"解释".

最简单的方法是使用struct:

typedef struct quaternion_t {

double x,y,z,w;

} quaternion_t;

请注意,如上所述,通常的做法也是使用x,y,z和w作为组件名称(但只要您知道哪个是哪个,您的命名是完全可以接受的).对组件使用双精度或单精度浮子取决于您的需求:精度或空间.

简单的操作便于实现:

void conjugate(quaternion_t *q){

q->x = -q->x;

q->y = -q->y;

q->z = -q->z;

}

double product(quaternion_t *q1, quaternion_t *q2){

return q1->x * q2->x + q1->y * q2->y + q1->z * q2->z + q1->w * q2->w;

}

double norm(quaternion_t *q){

double p = product(q,q);

return sqrt(p);

}

// etc

对于你的第二个问题,我建议你寻找一个关于该主题的好教程.同时,维基百科页面:

提供一个很好的介绍.

四元数c语言,C + OpenGL四元数相关推荐

  1. C语言实现四元数的乘法(三维矢量、四元数以及旋转矢量与四元数相乘源码)

    四元数的乘法 四元数 四元数的运算 源码 四元数 在将三维矢量代数推广至乘法和除法运算的研究中,爱尔兰数学家.物理学家哈密顿于1843年创建了四元数((quaternion)和四元数代数.四元数是指由 ...

  2. C语言实现姿态四元数转旋转矢量

    姿态四元数转旋转矢量 四元数 旋转矢量 源码 四元数 在将三维矢量代数推广至乘法和除法运算的研究中,爱尔兰数学家.物理学家哈密顿于1843年创建了四元数(quaternion)和四元数代数.四元数是指 ...

  3. 欧拉角与四元数互转,及四元数slerp球面线性插值算法

    欧拉角与四元数互转,及四元数slerp球面线性插值算法 1. 欧拉角与四元数是什么? 2. 源码 2.1 欧拉角类 2.2 四元数类 2.3 欧拉角与四元数互转及球面线性插值算法 参考 1. 欧拉角与 ...

  4. 四元数:从复数到四元数

    0.前言 所谓四元数(Quaternion),一句话说就是复数的拓展,那么四元数只是简单的维度增加的复数吗?它代表了什么样的物理意义和数学道理呢? 1.四元数的定义 四元数是复数的拓展.我们知道一个复 ...

  5. 四元数笔记(1)—— 四元数及其运算

    文章目录 0. 四元数的前世今生 1. 四元数的一般形式 2. 四元数的加减 3. 四元数的乘积 4. 实四元数与纯四元数 5. 单位四元数 6. 四元数的二元形式 7. 四元数的共轭 8. 四元数的 ...

  6. 【Unity】Unity 欧拉角、四元数、万向节死锁、四元数转轴角

    文章目录 欧拉角(Euler) 万向节 欧拉角旋转特性 欧拉角优点 欧拉角缺点 方位的表达方式不唯一 万向节锁(Gimbal Lock) 四元数(Quaternion) 四元数转轴角 四元数优点 四元 ...

  7. 对偶四元数——使用python3实现对偶四元数的符号运算 v2.0

    实现对偶四元数简单的符号运算,数值运算,2.0版本 改正了v1.0中的一些错误,添加了四元数归一化,转换为齐次变换矩阵,转换为螺旋,转换为双矢量,三种共轭等功能 可以先看最后例子的效果 目录 1 创建 ...

  8. Unity中左手坐标系的四元数转右手坐标系中的四元数

    终始的左右手坐标系时固定在一起的,所以虽然四元数不同,但是旋转轴向量与旋转角是相同的. 从基本公式出发q=cos(θ)+sin(θ)∗(i,j,k)q=cos(\theta)+sin(\theta)* ...

  9. C语言quaternion(四元数)(附完整源码)

    quaternion四元数 quaternion四元数类型定义 geometry_datatypes.h 四元数有关的几个接口 quaternion(四元数)有关的功能的完整源码(定义,实现,main ...

最新文章

  1. Java类与匿名内部类
  2. el-tree 权限 勾选_一周新债总结,最高涨30%,10月26日起可转债交易需要先开权限...
  3. ps怎么一下选中多个图层_超实用!50个非常实用的PS快捷键命令大全分享
  4. c++ 数字后加f_c.4 计算摄氏温度
  5. Spinner 学习笔记
  6. SLF4JLoggerContext cannot be cast to LoggerContext
  7. 中文宾州树库标记含义
  8. c语言手机教程,【图片】【教程】手机c语言入门与手机c编程【mrp吧】_百度贴吧...
  9. ROS Kinetic 安装指南
  10. weblogic-修改控制台登录密码
  11. 利用iMazing将iOS设备的录音文件拷贝到电脑
  12. java语言的演化——读JavaOne ppt笔记
  13. 绘制ER图:PowerDesigner数据库设计软件讲解
  14. 马斯克:未来将尝试打造超级高铁运输系统 时速是飞机的2倍
  15. synchronized原理
  16. 单播、组播(目标广播、多播)、广播、泛洪、洪泛介绍与比较
  17. 计算机网络-网络安全
  18. MyBioSource 丨艾美捷抗C17ORF75抗体:兔C17ORF75多克隆抗体
  19. Python-练习 5 更多变量和打印
  20. 基于python的植物大战僵尸游戏开发

热门文章

  1. 汇编指令的学习3——协处理器cp15的操作指令mcr、mrc
  2. C++远征之封装篇——字符串类型
  3. Dart中的mixins
  4. 使用复合设计模式扩展持久化的CURD,Select能力
  5. golang的sync包例子
  6. WINCE应用的UI实现方案
  7. C++中的模板展开问题
  8. 4岁小女孩给Linux内核贡献提交
  9. linux 内核宏container_of剖析
  10. 计算机学业水平测试字处理多少分,【计算机应用论文】计算机应用基础学业水平的测试问题(共3624字)...