absence_thelab

diff src/common/n3dmath.inl @ 0:1cffe3409164

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 23 Oct 2014 01:46:07 +0300
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/common/n3dmath.inl	Thu Oct 23 01:46:07 2014 +0300
     1.3 @@ -0,0 +1,116 @@
     1.4 +float Vector3::DotProduct(const Vector3 &vec) const {
     1.5 +	return x * vec.x + y * vec.y + z * vec.z;
     1.6 +}
     1.7 +
     1.8 +float DotProduct(const Vector3 &vec1, const Vector3 &vec2) {
     1.9 +	return vec1.x * vec2.x + vec1.y * vec2.y + vec1.z * vec2.z;
    1.10 +}
    1.11 +
    1.12 +Vector3 Vector3::CrossProduct(const Vector3 &vec) const {
    1.13 +	return Vector3(y * vec.z - z * vec.y,  z * vec.x - x * vec.z,  x * vec.y - y * vec.x);
    1.14 +}
    1.15 +
    1.16 +Vector3 CrossProduct(const Vector3 &vec1, const Vector3 &vec2) {
    1.17 +	return Vector3(vec1.y * vec2.z - vec1.z * vec2.y,  vec1.z * vec2.x - vec1.x * vec2.z,  vec1.x * vec2.y - vec1.y * vec2.x);
    1.18 +}
    1.19 +
    1.20 +Vector3 Vector3::operator +(const Vector3 &vec) const {
    1.21 +	return Vector3(x + vec.x, y + vec.y, z + vec.z);
    1.22 +}
    1.23 +
    1.24 +Vector3 Vector3::operator -(const Vector3 &vec) const {
    1.25 +	return Vector3(x - vec.x, y - vec.y, z - vec.z);
    1.26 +}
    1.27 +
    1.28 +Vector3 Vector3::operator *(float scalar) const {
    1.29 +	return Vector3(x * scalar, y * scalar, z * scalar);
    1.30 +}
    1.31 +
    1.32 +Vector3 Vector3::operator /(float scalar) const {
    1.33 +	return Vector3(x / scalar, y / scalar, z / scalar);
    1.34 +}
    1.35 +
    1.36 +void Vector3::operator +=(const Vector3 &vec) {
    1.37 +	x += vec.x;
    1.38 +	y += vec.y;
    1.39 +	z += vec.z;
    1.40 +}
    1.41 +
    1.42 +void Vector3::operator -=(const Vector3 &vec) {
    1.43 +	x -= vec.x;
    1.44 +	y -= vec.y;
    1.45 +	z -= vec.z;
    1.46 +}
    1.47 +
    1.48 +void Vector3::operator *=(float scalar) {
    1.49 +	x *= scalar;
    1.50 +	y *= scalar;
    1.51 +	z *= scalar;
    1.52 +}
    1.53 +
    1.54 +void Vector3::operator /=(float scalar) {
    1.55 +	x /= scalar;
    1.56 +	y /= scalar;
    1.57 +	z /= scalar;
    1.58 +}
    1.59 +
    1.60 +Vector3 Vector3::operator -() const {
    1.61 +	return Vector3(-x, -y, -z);
    1.62 +}
    1.63 +
    1.64 +bool Vector3::operator >(const Vector3 &vec) const {
    1.65 +	return LengthSq() > vec.LengthSq();
    1.66 +}
    1.67 +
    1.68 +bool Vector3::operator <(const Vector3 &vec) const {
    1.69 +	return LengthSq() < vec.LengthSq();
    1.70 +}
    1.71 +
    1.72 +bool Vector3::operator >(float len) const {
    1.73 +	return LengthSq() > len;
    1.74 +}
    1.75 +
    1.76 +bool Vector3::operator <(float len) const {
    1.77 +	return LengthSq() < len;
    1.78 +}
    1.79 +
    1.80 +bool Vector3::operator ==(const Vector3 &vec) const {
    1.81 +	return ((*this - vec).Length() < XSmallNumber);
    1.82 +}
    1.83 +
    1.84 +bool Vector3::operator ==(float len) const {
    1.85 +	return ((this->Length() - len) < XSmallNumber);
    1.86 +}
    1.87 +
    1.88 +Vector3::operator Vector2() const {
    1.89 +	return Vector2(x, y);
    1.90 +}
    1.91 +
    1.92 +Vector3::operator Vector4() const {
    1.93 +	return Vector4(x, y, z, 1.0f);
    1.94 +}
    1.95 +
    1.96 +
    1.97 +float Vector3::Length() const {
    1.98 +	return (float)sqrt(x*x + y*y + z*z);
    1.99 +}
   1.100 +
   1.101 +float Vector3::LengthSq() const {
   1.102 +	return x*x + y*y + z*z;
   1.103 +}
   1.104 +
   1.105 +void Vector3::Normalize() {
   1.106 +	float len = (float)sqrt(x*x + y*y + z*z);
   1.107 +	x /= len;
   1.108 +	y /= len;
   1.109 +	z /= len;
   1.110 +}
   1.111 +
   1.112 +Vector3 Vector3::Normalized() const {
   1.113 +	float len = (float)sqrt(x*x + y*y + z*z);
   1.114 +	return Vector3(x / len, y / len, z / len);
   1.115 +}
   1.116 +
   1.117 +Vector3 Vector3::Reflection(const Vector3 &normal) const {
   1.118 +	return normal * this->DotProduct(normal) * 2.0f - *this;
   1.119 +}
   1.120 \ No newline at end of file