![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
3D数学
Fatestay_DC
这个作者很懒,什么都没留下…
展开
-
四元数插值
上图不好计算 四元数插值 两个方位之间的角度差 类比向量旋转插值extern Quaternion slerp(const Quaternion &q1, const Quaternion &q2,float t); //插值 0<t<1Quaternion slerp(const Quaternion &q0, const Quaternion &q1, float t){ if (t <= 0) { return q0; }..原创 2020-07-09 18:53:58 · 371 阅读 · 0 评论 -
轴对称矩形边界框
上面不好计算 参考向量角度插值插值 两个四元数角度之间的插值计算k1 k0#pragma once#include "Vector3.h"class RotationMatrix;class EulerAngles;class Quaternion{public: float w, x, y, z; void Identify() { w = 1; x = 0; y = 0; z = 0; } //单位四元数 void setToRotateAboutX(floa.原创 2020-07-08 11:28:58 · 354 阅读 · 0 评论 -
四元数与矩阵欧拉角之间的相互转换
四元数转矩阵void fromInertialToObjectQuaternion(const Quaternion &q); void fromObjectToInertialQuaternion(const Quaternion &q);void RotationMatrix::fromInertialToObjectQuaternion(const Quaternion &q){ m11 = 1.0f - 2.0f*q.y*q.y - 2.0f*q.z*q..原创 2020-07-07 18:48:40 · 653 阅读 · 0 评论 -
四元数计算——乘法 规范化 点乘 共轭 幂运算
#pragma once#include "Vector3.h"class Quaternion{public: float w, x, y, z; void Identify() { w = 1; x = 0; y = 0; z = 0; } //单位四元数 void setToRotateAboutX(float theta); void setToRotateAboutY(float theta); void setToRotateAboutZ(float theta); .原创 2020-07-02 19:04:30 · 983 阅读 · 0 评论 -
四元数——概念以及相关数学公式 实现绕坐标轴旋转以及获取旋转角和旋转轴
四元数与复数复数 平面几何意义一个向量 (2D)复数做乘法 几何上是一个新的向量 向量旋转一定的角度 (2D)扩展到3D 3个虚部的复数 四元数[w (x y z)] = w+xi+yj+zki j k 的平方为-1 三个虚部四元数与轴-角对绕着任意旋转轴旋转任意角度负四元数全部取反单位四元数表示没有旋转四元数的模模为1的四元数 规范化的四元数共轭3d数学中使用的四元数 模都为1 四元数...原创 2020-06-30 18:58:33 · 3518 阅读 · 0 评论 -
旋转-欧拉角
矩阵表示旋转赋值操作比较麻烦,使用欧拉角代替矩阵表示顶点旋转1.欧拉角转变矩阵2.矩阵转欧拉角3.万向死锁避免以及角度限制#pragma once#include "RotationMatrix.h"#include "Matrix4X3.h"class EulerAngles{public : float heading; float pitch; float bank; EulerAngles(){} EulerAngles(float h,float p,原创 2020-06-16 18:33:50 · 352 阅读 · 0 评论 -
旋转
3D数学中表示图形旋转有三种方式:旋转矩阵,欧拉角,四元数性质 矩阵 欧拉角 四元数在坐标系间转换 能 不能 ...原创 2020-06-12 11:59:01 · 168 阅读 · 0 评论 -
矩阵-齐次矩阵
1.正交矩阵 一个矩阵为正交矩阵,就不需要求逆矩阵,直接使用正交矩阵作为逆矩阵进行变换运算。施密特正交化。2.3X3矩阵扩展为4X4齐次矩阵 最后一行表示矩阵的平移 线性变换+平移class Vector3;class Matrix4X3 {public: float m11, m12, m13; float m21, m22, m23; float m31, m32, m33; float tx, ty, tz; void SetRotate(int x, float thet原创 2020-06-08 10:47:26 · 5684 阅读 · 0 评论 -
矩阵-行列式以及矩阵的逆
class Vector3;class Matrix3X3 {public: float m11, m12, m13; float m21, m22, m23; float m31, m32, m33; void SetRotate(int x, float theta); void SetScale(const Vector3 &v); void SetProject(const Vector3 &v); void SetReflect(int x); void .原创 2020-06-07 18:20:06 · 1634 阅读 · 0 评论 -
矩阵-缩放投影镜像切变
class Vector3;class Matrix3X3 {public: float m11, m12, m13; float m21, m22, m23; float m31, m32, m33; void SetRotate(int x, float theta); void SetScale(const Vector3 &v); void SetProject(const Vector3 &v); void SetReflect(int x); void .原创 2020-06-04 18:16:08 · 203 阅读 · 0 评论 -
矩阵-旋转
class Vector3;class Matrix3X3 {public: float m11, m12, m13; float m21, m22, m23; float m31, m32, m33; void SetRotate(int x, float theta);};Matrix3X3 operator*(const Matrix3X3 &m1, const Matrix3X3 &m2);Vector3 operator*(const Vector3 &.原创 2020-06-03 16:46:12 · 239 阅读 · 0 评论 -
矩阵乘法
class Vector3;class Matrix3X3 {public: float m11, m12, m13; float m21, m22, m23; float m31, m32, m33;};Matrix3X3 operator*(const Matrix3X3 &m1, const Matrix3X3 &m2);Vector3 operator*(const Vector3 &v, const Matrix3X3 &m);#inc.原创 2020-06-03 10:29:32 · 140 阅读 · 0 评论 -
3D数学基础-向量
class Vector3{public: float x, y, z; Vector3(){} Vector3(const Vector3 &v):x(v.x),y(v.y),z(v.z){} Vector3(float _x,float _y,float _z) :x(_x), y(_y), z(_z) {} void Zero() { x = y = z = 0.0f; } Vector3 operator -() { return Vector3(-x, -y, -z.原创 2020-06-01 17:35:51 · 155 阅读 · 0 评论