GLUS
glus_vector.h
Go to the documentation of this file.
1 /*
2  * GLUS - Modern OpenGL, OpenGL ES and OpenVG Utilities. Copyright (C) since 2010 Norbert Nopper
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef GLUS_VECTOR_H_
19 #define GLUS_VECTOR_H_
20 
28 
36 
44 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3AddVector3f(GLUSfloat result[3], const GLUSfloat vector0[3], const GLUSfloat vector1[3]);
45 
53 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2AddVector2f(GLUSfloat result[2], const GLUSfloat vector0[2], const GLUSfloat vector1[2]);
54 
62 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3SubtractVector3f(GLUSfloat result[3], const GLUSfloat vector0[3], const GLUSfloat vector1[3]);
63 
71 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2SubtractVector2f(GLUSfloat result[2], const GLUSfloat vector0[2], const GLUSfloat vector1[2]);
72 
80 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3MultiplyScalarf(GLUSfloat result[3], const GLUSfloat vector[3], const GLUSfloat scalar);
81 
89 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2MultiplyScalarf(GLUSfloat result[2], const GLUSfloat vector[2], const GLUSfloat scalar);
90 
99 
108 
117 
126 
135 GLUSAPI GLUSfloat GLUSAPIENTRY glusVector3Dotf(const GLUSfloat vector0[3], const GLUSfloat vector1[3]);
136 
145 GLUSAPI GLUSfloat GLUSAPIENTRY glusVector2Dotf(const GLUSfloat vector0[2], const GLUSfloat vector1[2]);
146 
154 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3Crossf(GLUSfloat result[3], const GLUSfloat vector0[3], const GLUSfloat vector1[3]);
155 
163 
171 
179 
190 
201 
209 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3Reflectf(GLUSfloat result[3], const GLUSfloat incident[3], const GLUSfloat normal[3]);
210 
218 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2Reflectf(GLUSfloat result[2], const GLUSfloat incident[2], const GLUSfloat normal[2]);
219 
228 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3Refractf(GLUSfloat result[3], const GLUSfloat incident[3], const GLUSfloat normal[3], const float eta);
229 
238 GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2Refractf(GLUSfloat result[2], const GLUSfloat incident[2], const GLUSfloat normal[2], const float eta);
239 
249 GLUSAPI GLUSfloat GLUSAPIENTRY glusVector3Fresnelf(const GLUSfloat incident[3], const GLUSfloat normal[3], const GLUSfloat R0);
250 
260 GLUSAPI GLUSfloat GLUSAPIENTRY glusVector2Fresnelf(const GLUSfloat incident[2], const GLUSfloat normal[2], const GLUSfloat R0);
261 
270 
279 
288 
297 GLUSAPI GLUSvoid GLUSAPIENTRY glusVectorNMultiplyScalarc(GLUScomplex* result, const GLUScomplex* vector, const GLUSint n, const GLUSfloat scalar);
298 
307 
308 #endif /* GLUS_VECTOR_H_ */
GLUSAPI GLUSfloat GLUSAPIENTRY glusVector3Fresnelf(const GLUSfloat incident[3], const GLUSfloat normal[3], const GLUSfloat R0)
Calculate the specular reflection coefficient, based on Schlick's approximation for the Fresnel term...
Definition: glus_vector.c:284
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3SubtractVector3f(GLUSfloat result[3], const GLUSfloat vector0[3], const GLUSfloat vector1[3])
Subtracts a 3D Vector from another.
Definition: glus_vector.c:46
GLUSAPI GLUSboolean GLUSAPIENTRY glusVector2GramSchmidtOrthof(GLUSfloat result[2], const GLUSfloat u[2], const GLUSfloat v[2])
Creates a 2D vector orthogonal to u.
Definition: glus_vector.c:193
GLUSAPI GLUSvoid GLUSAPIENTRY glusVectorNFloatToComplexc(GLUScomplex *result, const GLUSfloat *vector, const GLUSint n)
Converts a float Vector with N elements to a complex Vector.
Definition: glus_vector.c:327
GLUSAPI GLUSvoid GLUSAPIENTRY glusVectorNMultiplyScalarc(GLUScomplex *result, const GLUScomplex *vector, const GLUSint n, const GLUSfloat scalar)
Multiplies a Vector with N elements by a scalar.
Definition: glus_vector.c:338
GLUSAPI GLUSvoid GLUSAPIENTRY glusVectorNConjugatec(GLUScomplex *result, const GLUScomplex *vector, const GLUSint n)
Calculates the complex conjugate of a Vector with N elements.
Definition: glus_vector.c:348
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2Reflectf(GLUSfloat result[2], const GLUSfloat incident[2], const GLUSfloat normal[2])
Calculate the reflection direction for an incident vector.
Definition: glus_vector.c:223
int GLUSint
Definition: glus_typedef.h:27
float GLUSfloat
Definition: glus_typedef.h:37
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2MultiplyScalarf(GLUSfloat result[2], const GLUSfloat vector[2], const GLUSfloat scalar)
Multiplies a 2D Vector by a scalar.
Definition: glus_vector.c:66
GLUSAPI GLUSfloat GLUSAPIENTRY glusVector3Lengthf(const GLUSfloat vector[3])
Calculates the length of a 3D Vector.
Definition: glus_vector.c:72
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3GetQuaternionf(GLUSfloat result[4], const GLUSfloat vector[3])
Creates a quaternion out of a 3D vector.
Definition: glus_vector.c:146
GLUSAPI GLUSfloat GLUSAPIENTRY glusVector2Fresnelf(const GLUSfloat incident[2], const GLUSfloat normal[2], const GLUSfloat R0)
Calculate the specular reflection coefficient, based on Schlick's approximation for the Fresnel term...
Definition: glus_vector.c:295
void GLUSvoid
Definition: glus_typedef.h:51
GLUSAPI GLUSboolean GLUSAPIENTRY glusVector3GramSchmidtOrthof(GLUSfloat result[3], const GLUSfloat u[3], const GLUSfloat v[3])
Creates a 3D vector orthogonal to u on the u/v plane.
Definition: glus_vector.c:169
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3Refractf(GLUSfloat result[3], const GLUSfloat incident[3], const GLUSfloat normal[3], const float eta)
Calculate the refraction direction for an incident vector.
Definition: glus_vector.c:230
GLUSAPI GLUSfloat GLUSAPIENTRY glusVector3Dotf(const GLUSfloat vector0[3], const GLUSfloat vector1[3])
Calculates the dot product of two 3D vectors.
Definition: glus_vector.c:120
GLUSAPI GLUSvoid GLUSAPIENTRY glusVectorNCopyc(GLUScomplex *result, const GLUScomplex *vector, const GLUSint n)
Copies a Vector with N elements.
Definition: glus_vector.c:306
Definition: glus_typedef.h:42
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2GetPoint3f(GLUSfloat result[3], const GLUSfloat vector[2])
Creates a 2D point, given as homogeneous coordinates, out of a 2D vector.
Definition: glus_vector.c:162
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3Reflectf(GLUSfloat result[3], const GLUSfloat incident[3], const GLUSfloat normal[3])
Calculate the reflection direction for an incident vector.
Definition: glus_vector.c:216
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3AddVector3f(GLUSfloat result[3], const GLUSfloat vector0[3], const GLUSfloat vector1[3])
Adds a 3D Vector to another.
Definition: glus_vector.c:33
GLUSAPI GLUSfloat GLUSAPIENTRY glusVector2Dotf(const GLUSfloat vector0[2], const GLUSfloat vector1[2])
Calculates the dot product of two 2D vectors.
Definition: glus_vector.c:125
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3Copyf(GLUSfloat result[3], const GLUSfloat vector[3])
Copies a 3D Vector.
Definition: glus_vector.c:20
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2Copyf(GLUSfloat result[2], const GLUSfloat vector[2])
Copies a 2D Vector.
Definition: glus_vector.c:27
GLUSAPI GLUSboolean GLUSAPIENTRY glusVector3Normalizef(GLUSfloat vector[3])
Normalizes the given 3D Vector.
Definition: glus_vector.c:82
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3MultiplyScalarf(GLUSfloat result[3], const GLUSfloat vector[3], const GLUSfloat scalar)
Multiplies a 3D Vector by a scalar.
Definition: glus_vector.c:59
GLUSAPI GLUSfloat GLUSAPIENTRY glusVector2Lengthf(const GLUSfloat vector[2])
Calculates the length of a 2D Vector.
Definition: glus_vector.c:77
#define GLUSAPI
Definition: glus_function.h:38
GLUSAPI GLUSboolean GLUSAPIENTRY glusVector2Normalizef(GLUSfloat vector[2])
Normalizes the given 2D Vector.
Definition: glus_vector.c:101
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3Crossf(GLUSfloat result[3], const GLUSfloat vector0[3], const GLUSfloat vector1[3])
Calculates the cross product of two 3D vectors: vector0 x vector1.
Definition: glus_vector.c:130
unsigned char GLUSboolean
Definition: glus_typedef.h:21
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector3GetPoint4f(GLUSfloat result[4], const GLUSfloat vector[3])
Creates a 3D point, given as homogeneous coordinates, out of a 3D vector.
Definition: glus_vector.c:154
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2SubtractVector2f(GLUSfloat result[2], const GLUSfloat vector0[2], const GLUSfloat vector1[2])
Subtracts a 2D Vector from another.
Definition: glus_vector.c:53
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2Refractf(GLUSfloat result[2], const GLUSfloat incident[2], const GLUSfloat normal[2], const float eta)
Calculate the refraction direction for an incident vector.
Definition: glus_vector.c:260
GLUSAPI GLUSvoid GLUSAPIENTRY glusVector2AddVector2f(GLUSfloat result[2], const GLUSfloat vector0[2], const GLUSfloat vector1[2])
Adds a 2D Vector to another.
Definition: glus_vector.c:40
#define GLUSAPIENTRY
Definition: glus_function.h:31
GLUSAPI GLUSvoid GLUSAPIENTRY glusVectorNComplexToFloatc(GLUSfloat *result, const GLUScomplex *vector, const GLUSint n)
Converts a complex number Vector with N elements to a float Vector.
Definition: glus_vector.c:316