- Hands-On C++ Game Animation Programming
- Gabor Szauer
- 338字
- 2021-06-30 14:46:00
Creating quaternions
Quaternions are used to encode rotation data. In code, quaternions will have four components. They resemble vec4 in that they have an x, y, z, and w component.
As with vec4, the w component comes last.
The quat structure should have two constructors. The default constructor creates an identity quaternion, (0, 0, 0, 1). The (0, 0, 0, 1) identity quaternion is like 1. Any number multiplied by 1 remains the same. Similarly, any quaternion multiplied by the identity quaternion remains the same:
Create a new file, quat.h, to declare the quaternion structure. The quat structure is going to be used throughout the rest of this book to represent rotations:
#ifndef _H_QUAT_
#define _H_QUAT_
#include "vec3.h"
#include "mat4.h"
struct quat {
union {
struct {
float x;
float y;
float z;
float w;
};
struct {
vec3 vector;
float scalar;
};
float v[4];
};
inline quat() :
x(0), y(0), z(0), w(1) { }
inline quat(float _x, float _y, float _z, float _w)
: x(_x), y(_y), z(_z), w(_w) {}
};
#endif
The anonymous union inside the quat structure will allow you to access the data inside a quaternion through X, Y, Z, and W subscript notation, as a vector and scalar pair, or as an array of floating-point values.
Next, you're going to learn how to start creating quaternions.
- 企業級Java EE架構設計精深實踐
- OpenShift開發指南(原書第2版)
- 編程卓越之道(卷3):軟件工程化
- C# Programming Cookbook
- Java應用開發與實踐
- 看透JavaScript:原理、方法與實踐
- 人臉識別原理及算法:動態人臉識別系統研究
- 前端架構:從入門到微前端
- PHP+MySQL+Dreamweaver動態網站開發實例教程
- C語言程序設計案例精粹
- Haxe Game Development Essentials
- Apache Kafka Quick Start Guide
- Android開發案例教程與項目實戰(在線實驗+在線自測)
- 零基礎學Python網絡爬蟲案例實戰全流程詳解(入門與提高篇)
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(2)