9#ifndef _util_misc_algebra_h
10#define _util_misc_algebra_h
19typedef double (*V_FCT_PTR)(double);
29enum {RED, GREEN, BLUE};
48vec2(
const double x,
const double y);
52vec2(
const vec3& v,
int dropAxis);
56vec2& operator = (
const vec2& v );
57vec2& operator += (
const vec2& v );
58vec2& operator -= (
const vec2& v );
59vec2& operator *= (
const double d );
60vec2& operator /= (
const double d );
61double& operator [] (
int i);
62const double& operator[](
int i)
const;
69vec2& apply(V_FCT_PTR fct);
73friend vec2 operator - (
const vec2& v);
74friend vec2 operator + (
const vec2& a,
const vec2& b);
75friend vec2 operator - (
const vec2& a,
const vec2& b);
76friend vec2 operator * (
const vec2& a,
const double d);
77friend vec2 operator * (
const double d,
const vec2& a);
78friend vec2 operator * (
const mat3& a,
const vec2& v);
79friend vec2 operator * (
const vec2& v,
mat3& a);
80friend double operator * (
const vec2& a,
const vec2& b);
81friend vec2 operator / (
const vec2& a,
const double d);
82friend vec3 operator ^ (
const vec2& a,
const vec2& b);
83friend int operator == (
const vec2& a,
const vec2& b);
84friend int operator != (
const vec2& a,
const vec2& b);
85friend std::ostream& operator << (std::ostream& s, vec2& v);
86friend std::istream& operator >> (std::istream& s, vec2& v);
87friend void swap(vec2& a, vec2& b);
88friend vec2 min(
const vec2& a,
const vec2& b);
89friend vec2 max(
const vec2& a,
const vec2& b);
90friend vec2 prod(
const vec2& a,
const vec2& b);
114vec3(
const double x,
const double y,
const double z);
118vec3(
const vec2& v,
double d);
120vec3(
const vec4& v,
int dropAxis);
124vec3& operator = (
const vec3& v );
125vec3& operator += (
const vec3& v );
126vec3& operator -= (
const vec3& v );
127vec3& operator *= (
const double d );
128vec3& operator /= (
const double d );
129double& operator [] (
int i);
130const double& operator[](
int i)
const;
137vec3& apply(V_FCT_PTR fct);
141friend vec3 operator - (
const vec3& v);
142friend vec3 operator + (
const vec3& a,
const vec3& b);
143friend vec3 operator - (
const vec3& a,
const vec3& b);
144friend vec3 operator * (
const vec3& a,
const double d);
145friend vec3 operator * (
const double d,
const vec3& a);
146friend vec3 operator * (
const mat4& a,
const vec3& v);
147friend vec3 operator * (
const vec3& v,
const mat4& a);
148friend double operator * (
const vec3& a,
const vec3& b);
149friend vec3 operator / (
const vec3& a,
const double d);
150friend vec3 operator ^ (
const vec3& a,
const vec3& b);
151friend int operator == (
const vec3& a,
const vec3& b);
152friend int operator != (
const vec3& a,
const vec3& b);
153friend std::ostream& operator << (std::ostream& s, vec3& v);
154friend std::istream& operator >> (std::istream& s, vec3& v);
155friend void swap(vec3& a, vec3& b);
156friend vec3 min(
const vec3& a,
const vec3& b);
157friend vec3 max(
const vec3& a,
const vec3& b);
158friend vec3 prod(
const vec3& a,
const vec3& b);
165friend vec2 operator * (
const mat3& a,
const vec2& v);
166friend mat3 operator * (
const mat3& a,
const mat3& b);
186vec4(
const double x,
const double y,
const double z,
const double w);
190vec4(
const vec3& v,
const double d);
194vec4& operator = (
const vec4& v );
195vec4& operator += (
const vec4& v );
196vec4& operator -= (
const vec4& v );
197vec4& operator *= (
const double d );
198vec4& operator /= (
const double d );
199double& operator [] (
int i);
200const double& operator [] (
int i)
const;
207vec4& apply(V_FCT_PTR fct);
211friend vec4 operator - (
const vec4& v);
212friend vec4 operator + (
const vec4& a,
const vec4& b);
213friend vec4 operator - (
const vec4& a,
const vec4& b);
214friend vec4 operator * (
const vec4& a,
const double d);
215friend vec4 operator * (
const double d,
const vec4& a);
216friend vec4 operator * (
const mat4& a,
const vec4& v);
217friend vec4 operator * (
const vec4& v,
const mat4& a);
218friend double operator * (
const vec4& a,
const vec4& b);
219friend vec4 operator / (
const vec4& a,
const double d);
220friend int operator == (
const vec4& a,
const vec4& b);
221friend int operator != (
const vec4& a,
const vec4& b);
222friend std::ostream& operator << (std::ostream& s, vec4& v);
223friend std::istream& operator >> (std::istream& s, vec4& v);
224friend void swap(vec4& a, vec4& b);
225friend vec4 min(
const vec4& a,
const vec4& b);
226friend vec4 max(
const vec4& a,
const vec4& b);
227friend vec4 prod(
const vec4& a,
const vec4& b);
233friend vec3 operator * (
const mat4& a,
const vec3& v);
234friend mat4 operator * (
const mat4& a,
const mat4& b);
260mat3& operator = (
const mat3& m );
261mat3& operator += (
const mat3& m );
262mat3& operator -= (
const mat3& m );
263mat3& operator *= (
const double d );
264mat3& operator /= (
const double d );
265vec3& operator [] (
int i);
266const vec3& operator [] (
int i)
const;
270mat3 transpose()
const;
272mat3& apply(V_FCT_PTR fct);
276friend mat3 operator - (
const mat3& a);
277friend mat3 operator + (
const mat3& a,
const mat3& b);
278friend mat3 operator - (
const mat3& a,
const mat3& b);
279friend mat3 operator * (
const mat3& a,
const mat3& b);
280friend mat3 operator * (
const mat3& a,
const double d);
281friend mat3 operator * (
const double d,
const mat3& a);
282friend mat3 operator / (
const mat3& a,
const double d);
283friend int operator == (
const mat3& a,
const mat3& b);
284friend int operator != (
const mat3& a,
const mat3& b);
285friend std::ostream& operator << (std::ostream& s, mat3& m);
286friend std::istream& operator >> (std::istream& s, mat3& m);
287friend void swap(mat3& a, mat3& b);
291friend vec3 operator * (
const mat3& a,
const vec3& v);
292friend vec2 operator * (
const mat3& a,
const vec2& v);
318mat4& operator = (
const mat4& m );
319mat4& operator += (
const mat4& m );
320mat4& operator -= (
const mat4& m );
321mat4& operator *= (
const double d );
322mat4& operator /= (
const double d );
323vec4& operator [] (
int i);
324const vec4& operator [] (
int i)
const;
328mat4 transpose()
const;
330mat4& apply(V_FCT_PTR fct);
334friend mat4 operator - (
const mat4& a);
335friend mat4 operator + (
const mat4& a,
const mat4& b);
336friend mat4 operator - (
const mat4& a,
const mat4& b);
337friend mat4 operator * (
const mat4& a,
const mat4& b);
338friend mat4 operator * (
const mat4& a,
const double d);
339friend mat4 operator * (
const double d,
const mat4& a);
340friend mat4 operator / (
const mat4& a,
const double d);
341friend int operator == (
const mat4& a,
const mat4& b);
342friend int operator != (
const mat4& a,
const mat4& b);
343friend std::ostream& operator << (std::ostream& s, mat4& m);
344friend std::istream& operator >> (std::istream& s, mat4& m);
345friend void swap(mat4& a, mat4& b);
349friend vec4 operator * (
const mat4& a,
const vec4& v);
350friend vec3 operator * (
const mat4& a,
const vec3& v);
361mat3 rotation2D(
const vec2& Center,
const double angleDeg);
362mat3 scaling2D(
const vec2& scaleVector);
365mat4 rotation3D(
const vec3& Axis,
const double angleDeg);
366mat4 scaling3D(
const vec3& scaleVector);
367mat4 perspective3D(
const double d);
Definition algebra3.h:244
Definition algebra3.h:302
Definition algebra3.h:104
Definition algebra3.h:176