rayzor

diff src/vmath.h @ 1:a826bf0fb169

fixed line endings
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 05 Apr 2014 09:05:26 +0300
parents 2a5340a6eee4
children d94a69933a71
line diff
     1.1 --- a/src/vmath.h	Sat Apr 05 08:46:27 2014 +0300
     1.2 +++ b/src/vmath.h	Sat Apr 05 09:05:26 2014 +0300
     1.3 @@ -1,148 +1,148 @@
     1.4 -#ifndef VMATH_H_
     1.5 -#define VMATH_H_
     1.6 -
     1.7 -#include <math.h>
     1.8 -#include "vmathmat.h"
     1.9 -
    1.10 -class Vector3 {
    1.11 -public:
    1.12 -	float x, y, z;
    1.13 -
    1.14 -	Vector3() : x(0), y(0), z(0) {}
    1.15 -	Vector3(float xx, float yy, float zz) : x(xx), y(yy), z(zz) {}
    1.16 -
    1.17 -	float length_sq() const { return x * x + y * y + z * z; }
    1.18 -	float length() const { return sqrt(x * x + y * y + z * z); }
    1.19 -
    1.20 -	void normalize()
    1.21 -	{
    1.22 -		float len = length();
    1.23 -		if(len != 0.0) {
    1.24 -			x /= len;
    1.25 -			y /= len;
    1.26 -			z /= len;
    1.27 -		}
    1.28 -	}
    1.29 -
    1.30 -	float &operator [](int idx) { return idx == 2 ? z : (idx == 1 ? y : x); }
    1.31 -	const float &operator [](int idx) const { return idx == 2 ? z : (idx == 1 ? y : x); }
    1.32 -};
    1.33 -
    1.34 -inline Vector3 normalize(const Vector3 &v)
    1.35 -{
    1.36 -	float len = v.length();
    1.37 -	if(len != 0.0) {
    1.38 -		return Vector3(v.x / len, v.y / len, v.z / len);
    1.39 -	}
    1.40 -	return v;
    1.41 -}
    1.42 -
    1.43 -inline Vector3 operator +(const Vector3 &a, const Vector3 &b)
    1.44 -{
    1.45 -	return Vector3(a.x + b.x, a.y + b.y, a.z + b.z);
    1.46 -}
    1.47 -
    1.48 -inline Vector3 operator -(const Vector3 &a, const Vector3 &b)
    1.49 -{
    1.50 -	return Vector3(a.x - b.x, a.y - b.y, a.z - b.z);
    1.51 -}
    1.52 -
    1.53 -inline Vector3 operator *(const Vector3 &v, float s)
    1.54 -{
    1.55 -	return Vector3(v.x * s, v.y * s, v.z * s);
    1.56 -}
    1.57 -
    1.58 -inline Vector3 operator /(const Vector3 &v, float s)
    1.59 -{
    1.60 -	return Vector3(v.x / s, v.y / s, v.z / s);
    1.61 -}
    1.62 -
    1.63 -inline float dot(const Vector3 &a, const Vector3 &b)
    1.64 -{
    1.65 -	return a.x * b.x + a.y * b.y + a.z * b.z;
    1.66 -}
    1.67 -
    1.68 -inline Vector3 cross(const Vector3 &a, const Vector3 &b)
    1.69 -{
    1.70 -	return Vector3(a.y * b.z - a.z * b.y,
    1.71 -			a.z * b.z - a.x * b.z,
    1.72 -			a.x * b.y - a.y * b.x);
    1.73 -}
    1.74 -
    1.75 -inline Vector3 transform(const Matrix4x4 &m, const Vector3 &v)
    1.76 -{
    1.77 -	float x = m.m[0][0] * v.x + m.m[0][1] * v.y + m.m[0][2] * v.z + m.m[0][3];
    1.78 -	float y = m.m[1][0] * v.x + m.m[1][1] * v.y + m.m[1][2] * v.z + m.m[1][3];
    1.79 -	float z = m.m[2][0] * v.x + m.m[2][1] * v.y + m.m[2][2] * v.z + m.m[2][3];
    1.80 -	return Vector3(x, y, z);
    1.81 -}
    1.82 -
    1.83 -// ---- Vector4 ----
    1.84 -
    1.85 -class Vector4 {
    1.86 -public:
    1.87 -	float x, y, z, w;
    1.88 -
    1.89 -	Vector4() : x(0), y(0), z(0), w(1.0) {}
    1.90 -	Vector4(const Vector3 &v) : x(v.x), y(v.y), z(v.z), w(1.0) {}
    1.91 -	Vector4(float xx, float yy, float zz, float ww) : x(xx), y(yy), z(zz), w(ww) {}
    1.92 -
    1.93 -	float length_sq() const { return x * x + y * y + z * z + w * w; }
    1.94 -	float length() const { return sqrt(x * x + y * y + z * z + w * w); }
    1.95 -
    1.96 -	void normalize()
    1.97 -	{
    1.98 -		float len = length();
    1.99 -		if(len != 0.0) {
   1.100 -			x /= len;
   1.101 -			y /= len;
   1.102 -			z /= len;
   1.103 -			w /= len;
   1.104 -		}
   1.105 -	}
   1.106 -
   1.107 -	float &operator [](int idx)
   1.108 -	{
   1.109 -		return idx == 3 ? w : (idx == 2 ? z : (idx == 1 ? y : x));
   1.110 -	}
   1.111 -	const float &operator [](int idx) const
   1.112 -	{
   1.113 -		return idx == 3 ? w : (idx == 2 ? z : (idx == 1 ? y : x));
   1.114 -	}
   1.115 -};
   1.116 -
   1.117 -inline Vector4 operator +(const Vector4 &a, const Vector4 &b)
   1.118 -{
   1.119 -	return Vector4(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w);
   1.120 -}
   1.121 -
   1.122 -inline Vector4 operator -(const Vector4 &a, const Vector4 &b)
   1.123 -{
   1.124 -	return Vector4(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w);
   1.125 -}
   1.126 -
   1.127 -inline Vector4 operator *(const Vector4 &v, float s)
   1.128 -{
   1.129 -	return Vector4(v.x * s, v.y * s, v.z * s, v.w * s);
   1.130 -}
   1.131 -
   1.132 -inline Vector4 operator /(const Vector4 &v, float s)
   1.133 -{
   1.134 -	return Vector4(v.x / s, v.y / s, v.z / s, v.w / s);
   1.135 -}
   1.136 -
   1.137 -inline float dot(const Vector4 &a, const Vector4 &b)
   1.138 -{
   1.139 -	return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
   1.140 -}
   1.141 -
   1.142 -inline Vector4 transform(const Matrix4x4 &m, const Vector4 &v)
   1.143 -{
   1.144 -	float x = m.m[0][0] * v.x + m.m[0][1] * v.y + m.m[0][2] * v.z + m.m[0][3] * v.w;
   1.145 -	float y = m.m[1][0] * v.x + m.m[1][1] * v.y + m.m[1][2] * v.z + m.m[1][3] * v.w;
   1.146 -	float z = m.m[2][0] * v.x + m.m[2][1] * v.y + m.m[2][2] * v.z + m.m[2][3] * v.w;
   1.147 -	float w = m.m[3][0] * v.x + m.m[3][1] * v.y + m.m[3][2] * v.z + m.m[3][3] * v.w;
   1.148 -	return Vector4(x, y, z, w);
   1.149 -}
   1.150 -
   1.151 -#endif	// VMATH_H_
   1.152 +#ifndef VMATH_H_
   1.153 +#define VMATH_H_
   1.154 +
   1.155 +#include <math.h>
   1.156 +#include "vmathmat.h"
   1.157 +
   1.158 +class Vector3 {
   1.159 +public:
   1.160 +	float x, y, z;
   1.161 +
   1.162 +	Vector3() : x(0), y(0), z(0) {}
   1.163 +	Vector3(float xx, float yy, float zz) : x(xx), y(yy), z(zz) {}
   1.164 +
   1.165 +	float length_sq() const { return x * x + y * y + z * z; }
   1.166 +	float length() const { return sqrt(x * x + y * y + z * z); }
   1.167 +
   1.168 +	void normalize()
   1.169 +	{
   1.170 +		float len = length();
   1.171 +		if(len != 0.0) {
   1.172 +			x /= len;
   1.173 +			y /= len;
   1.174 +			z /= len;
   1.175 +		}
   1.176 +	}
   1.177 +
   1.178 +	float &operator [](int idx) { return idx == 2 ? z : (idx == 1 ? y : x); }
   1.179 +	const float &operator [](int idx) const { return idx == 2 ? z : (idx == 1 ? y : x); }
   1.180 +};
   1.181 +
   1.182 +inline Vector3 normalize(const Vector3 &v)
   1.183 +{
   1.184 +	float len = v.length();
   1.185 +	if(len != 0.0) {
   1.186 +		return Vector3(v.x / len, v.y / len, v.z / len);
   1.187 +	}
   1.188 +	return v;
   1.189 +}
   1.190 +
   1.191 +inline Vector3 operator +(const Vector3 &a, const Vector3 &b)
   1.192 +{
   1.193 +	return Vector3(a.x + b.x, a.y + b.y, a.z + b.z);
   1.194 +}
   1.195 +
   1.196 +inline Vector3 operator -(const Vector3 &a, const Vector3 &b)
   1.197 +{
   1.198 +	return Vector3(a.x - b.x, a.y - b.y, a.z - b.z);
   1.199 +}
   1.200 +
   1.201 +inline Vector3 operator *(const Vector3 &v, float s)
   1.202 +{
   1.203 +	return Vector3(v.x * s, v.y * s, v.z * s);
   1.204 +}
   1.205 +
   1.206 +inline Vector3 operator /(const Vector3 &v, float s)
   1.207 +{
   1.208 +	return Vector3(v.x / s, v.y / s, v.z / s);
   1.209 +}
   1.210 +
   1.211 +inline float dot(const Vector3 &a, const Vector3 &b)
   1.212 +{
   1.213 +	return a.x * b.x + a.y * b.y + a.z * b.z;
   1.214 +}
   1.215 +
   1.216 +inline Vector3 cross(const Vector3 &a, const Vector3 &b)
   1.217 +{
   1.218 +	return Vector3(a.y * b.z - a.z * b.y,
   1.219 +			a.z * b.z - a.x * b.z,
   1.220 +			a.x * b.y - a.y * b.x);
   1.221 +}
   1.222 +
   1.223 +inline Vector3 transform(const Matrix4x4 &m, const Vector3 &v)
   1.224 +{
   1.225 +	float x = m.m[0][0] * v.x + m.m[0][1] * v.y + m.m[0][2] * v.z + m.m[0][3];
   1.226 +	float y = m.m[1][0] * v.x + m.m[1][1] * v.y + m.m[1][2] * v.z + m.m[1][3];
   1.227 +	float z = m.m[2][0] * v.x + m.m[2][1] * v.y + m.m[2][2] * v.z + m.m[2][3];
   1.228 +	return Vector3(x, y, z);
   1.229 +}
   1.230 +
   1.231 +// ---- Vector4 ----
   1.232 +
   1.233 +class Vector4 {
   1.234 +public:
   1.235 +	float x, y, z, w;
   1.236 +
   1.237 +	Vector4() : x(0), y(0), z(0), w(1.0) {}
   1.238 +	Vector4(const Vector3 &v) : x(v.x), y(v.y), z(v.z), w(1.0) {}
   1.239 +	Vector4(float xx, float yy, float zz, float ww) : x(xx), y(yy), z(zz), w(ww) {}
   1.240 +
   1.241 +	float length_sq() const { return x * x + y * y + z * z + w * w; }
   1.242 +	float length() const { return sqrt(x * x + y * y + z * z + w * w); }
   1.243 +
   1.244 +	void normalize()
   1.245 +	{
   1.246 +		float len = length();
   1.247 +		if(len != 0.0) {
   1.248 +			x /= len;
   1.249 +			y /= len;
   1.250 +			z /= len;
   1.251 +			w /= len;
   1.252 +		}
   1.253 +	}
   1.254 +
   1.255 +	float &operator [](int idx)
   1.256 +	{
   1.257 +		return idx == 3 ? w : (idx == 2 ? z : (idx == 1 ? y : x));
   1.258 +	}
   1.259 +	const float &operator [](int idx) const
   1.260 +	{
   1.261 +		return idx == 3 ? w : (idx == 2 ? z : (idx == 1 ? y : x));
   1.262 +	}
   1.263 +};
   1.264 +
   1.265 +inline Vector4 operator +(const Vector4 &a, const Vector4 &b)
   1.266 +{
   1.267 +	return Vector4(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w);
   1.268 +}
   1.269 +
   1.270 +inline Vector4 operator -(const Vector4 &a, const Vector4 &b)
   1.271 +{
   1.272 +	return Vector4(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w);
   1.273 +}
   1.274 +
   1.275 +inline Vector4 operator *(const Vector4 &v, float s)
   1.276 +{
   1.277 +	return Vector4(v.x * s, v.y * s, v.z * s, v.w * s);
   1.278 +}
   1.279 +
   1.280 +inline Vector4 operator /(const Vector4 &v, float s)
   1.281 +{
   1.282 +	return Vector4(v.x / s, v.y / s, v.z / s, v.w / s);
   1.283 +}
   1.284 +
   1.285 +inline float dot(const Vector4 &a, const Vector4 &b)
   1.286 +{
   1.287 +	return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
   1.288 +}
   1.289 +
   1.290 +inline Vector4 transform(const Matrix4x4 &m, const Vector4 &v)
   1.291 +{
   1.292 +	float x = m.m[0][0] * v.x + m.m[0][1] * v.y + m.m[0][2] * v.z + m.m[0][3] * v.w;
   1.293 +	float y = m.m[1][0] * v.x + m.m[1][1] * v.y + m.m[1][2] * v.z + m.m[1][3] * v.w;
   1.294 +	float z = m.m[2][0] * v.x + m.m[2][1] * v.y + m.m[2][2] * v.z + m.m[2][3] * v.w;
   1.295 +	float w = m.m[3][0] * v.x + m.m[3][1] * v.y + m.m[3][2] * v.z + m.m[3][3] * v.w;
   1.296 +	return Vector4(x, y, z, w);
   1.297 +}
   1.298 +
   1.299 +#endif	// VMATH_H_