Irrlicht 源码学习笔记 【vector3d】

本文是关于Irrlicht引擎中vector3d的学习笔记,探讨了3D向量的基本运算,包括运算符重载、向量模长、点乘、叉乘以及旋转等概念。通过实例解释了3D向量的叉乘矩阵运算方法,并展示了围绕不同轴旋转的原理。
摘要由CSDN通过智能技术生成


vector3d 模版表示一个 3D 向量

3D 点和 3D 向量是3D图形学里最基础的东西

里面有一些方法是需要一点 3D 图形学基础的,但是也非常简单喽


【运算符重载】

首先是一些运算符的重载

注意一点的是加法和减法运算符实现的是对向量的平移

乘法和除法运算符分别是对当前每一个分量乘以和除以 other 的每一个分量

而判断大于等于的条件是要向量每一个分量都大于 other

vector3d<T>& operator=(const vector3d<T>& other)	{ X = other.X; Y = other.Y; Z = other.Z; return *this; }

vector3d<T> operator+(const vector3d<T>& other) const { return vector3d<T>(X + other.X, Y + other.Y, Z + other.Z);	}
vector3d<T>& operator+=(const vector3d<T>& other)	{ X+=other.X; Y+=other.Y; Z+=other.Z; return *this; }

vector3d<T> operator-(const vector3d<T>& other) const { return vector3d<T>(X - other.X, Y - other.Y, Z - other.Z);	}
vector3d<T>& operator-=(const vector3d<T>& other)	{ X-=other.X; Y-=other.Y; Z-=other.Z; return *this; }

vector3d<T> operator*(const vector3d<T>& other) const { return vector3d<T>(X * other.X, Y * other.Y, Z * other.Z);	}
vector3d<T>& operator*=(const vector3d<T>& other)	{ X*=other.X; Y*=other.Y; Z*=other.Z; return *this; }
vector3d<T> operator*(const T v) const { return vector3d<T>(X * v, Y * v, Z * v);	}
vector3d<T>& operator*=(const T v) { X*=v; Y*=v; Z*=v; return *this; }

vector3d<T> operator/(const vector3d<T>& other) const { return vector3d<T>(X / other.X, Y / other.Y, Z / other.Z);	}
vector3d<T>& operator/=(const vector3d<T>& other)	{ X/=other.X; Y/=other.Y; Z/=other.Z; return *this; }
vector3d<T> operator/(const T v) const { T i=(T)1.0/v; return vector3d<T>(X * i, Y * i, Z * i);	}
vector3d<T>& operator/=(const T v) { T i=(T)1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值