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);
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);
76friend vec2 operator * (
const vec2& a,
const double d);
77friend vec2 operator * (
const double d,
const vec2& a);
80friend double operator * (
const vec2& a,
const vec2& b);
81friend vec2 operator / (
const vec2& a,
const double d);
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);
114vec3(
const double x,
const double y,
const double z);
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);
144friend vec3 operator * (
const vec3& a,
const double d);
145friend vec3 operator * (
const double d,
const vec3& a);
148friend double operator * (
const vec3& a,
const vec3& b);
149friend vec3 operator / (
const vec3& a,
const double d);
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);
186vec4(
const double x,
const double y,
const double z,
const double w);
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);
214friend vec4 operator * (
const vec4& a,
const double d);
215friend vec4 operator * (
const double d,
const vec4& 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);
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);
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);
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);
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);
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