3vector.h File Reference (original) (raw)

#include <stdlib.h>
#include <stdio.h>
#include <[gandalf/common/misc_defs.h](misc%5F%5Fdefs%5F8h-source.html)>
#include <[gandalf/linalg/2vector.h](2vector%5F8h-source.html)>
#include <[gandalf/linalg/vec_gen.h](vec%5F%5Fgen%5F8h-source.html)>

Go to the source code of this file.

Classes
struct Gan_Vector3
Structure definition for double precision floating point 3-vector. More...
struct Gan_Vector3_uc
Structure definition for unsigned character 3-vector. More...
struct Gan_Vector3_s
Structure definition for short integer 3-vector. More...
struct Gan_Vector3_us
Structure definition for unsigned short integer 3-vector. More...
struct Gan_Vector3_i
Structure definition for integer 3-vector. More...
struct Gan_Vector3_ui
Structure definition for unsigned integer 3-vector. More...
Defines
#define GAN_REP3_AS(a, b, p1, p2, p3) (a p1 b, a p2 b, a p3 b)
#define GAN_REP3_AS_C(a, b) GAN_REP3_AS(a,b,x,y,z)
#define GAN_REP3_A(a, p1, p2, p3) (a p1, a p2, a p3)
#define GAN_REP3_A_C(a) GAN_REP3_A(a,x,y,z)
#define GAN_FREP3_A(a, b, p1, p2, p3, q1, q2, q3) (a p1 b q1, a p2 b q2, a p3 b q3)
#define GAN_FREP3_A_C(a, b, p1, p2, p3) GAN_FREP3_A(a,b,x,y,z,p1,p2,p3)
#define GAN_REP3_ABS(a, b, c, p1, p2, p3, q1, q2, q3) (a p1 b q1 c, a p2 b q2 c, a p3 b q3 c)
#define GAN_REP3_AAS(a, b, c, p1, p2, p3) GAN_REP3_ABS(a,b,c,p1,p2,p3,p1,p2,p3)
#define GAN_REP3_AAS_C(a, b, c) GAN_REP3_AAS(a,b,c,x,y,z)
#define GAN_REP3_AB(a, b, p1, p2, p3, q1, q2, q3) (a p1 b q1, a p2 b q2, a p3 b q3)
#define GAN_REP3_AA(a, b, p1, p2, p3) GAN_REP3_AB(a,b,p1,p2,p3,p1,p2,p3)
#define GAN_REP3_AA_C(a, b) GAN_REP3_AA(a,b,x,y,z)
#define GAN_REP3_ABCS(a, b, c, d, p1, p2, p3, q1, q2, q3, r1, r2, r3) (a p1 b q1 c r1 d, a p2 b q2 c r2 d, a p3 b q3 c r3 d)
#define GAN_REP3_ABC(a, b, c, p1, p2, p3, q1, q2, q3, r1, r2, r3) (a p1 b q1 c r1, a p2 b q2 c r2, a p3 b q3 c r3)
#define GAN_REP3_AAA(a, b, c, p1, p2, p3) GAN_REP3_ABC(a,b,c,p1,p2,p3,p1,p2,p3,p1,p2,p3)
#define GAN_REP3_AAA_C(a, b, c) GAN_REP3_AAA(a,b,c,x,y,z)
#define GAN_REP3_OP_AB(a, b, p1, p2, p3, q1, q2, q3, op) (a p1 b q1 op a p2 b q2 op a p3 b q3)
#define GAN_REP3_OP_AA(a, b, p1, p2, p3, op) GAN_REP3_OP_AB(a,b,p1,p2,p3,p1,p2,p3,op)
#define GAN_REP3_OP_AA_C(a, b, op) GAN_REP3_OP_AA(a,b,x,y,z,op)
#define GAN_TEST_OP1(A, typeA) assert(sizeof(*(A))==sizeof(typeA))
#define GAN_TEST_OP2(A, B, typeA, typeB) (assert(sizeof(*(A))==sizeof(typeA)&&sizeof(*(B))==sizeof(typeB)))
#define GAN_TEST_OP3(A, B, C, typeA, typeB, typeC)
#define GAN_TEST_OP4(A, B, C, D, typeA, typeB, typeC, typeD)
#define GAN_TEST_OP5(A, B, C, D, E, typeA, typeB, typeC, typeD, typeE)
#define GAN_VECTYPE Gan_Vector3
#define GAN_VECTOR_TYPE Gan_Vector
#define GAN_VEC_ELEMENT_TYPE GAN_DOUBLE
#define GAN_REALTYPE double
#define GAN_FWRITE_LENDIAN gan_fwrite_lendian_f64
#define GAN_FREAD_LENDIAN gan_fread_lendian_f64
#define GAN_VEC_FPRINT gan_vec3_fprint
#define GAN_VEC_PRINT gan_vec3_print
#define GAN_VEC_FSCANF gan_vec3_fscanf
#define GAN_VEC_FWRITE gan_vec3_fwrite
#define GAN_VEC_FREAD gan_vec3_fread
#define GAN_VEC_ZERO_Q gan_vec3_zero_q
#define GAN_VEC_ZERO_S gan_vec3_zero_s
#define GAN_VEC_COPY_Q gan_vec3_copy_q
#define GAN_VEC_COPY_S gan_vec3_copy_s
#define GAN_VEC_SCALE_Q gan_vec3_scale_q
#define GAN_VEC_SCALE_S gan_vec3_scale_s
#define GAN_VEC_SCALE_I gan_vec3_scale_i
#define GAN_VEC_DIVIDE_Q gan_vec3_divide_q
#define GAN_VEC_DIVIDE_S gan_vec3_divide_s
#define GAN_VEC_DIVIDE_I gan_vec3_divide_i
#define GAN_VEC_NEGATE_Q gan_vec3_negate_q
#define GAN_VEC_NEGATE_S gan_vec3_negate_s
#define GAN_VEC_NEGATE_I gan_vec3_negate_i
#define GAN_VEC_UNIT_Q gan_vec3_unit_q
#define GAN_VEC_UNIT_S gan_vec3_unit_s
#define GAN_VEC_UNIT_I gan_vec3_unit_i
#define GAN_VEC_ADD_Q gan_vec3_add_q
#define GAN_VEC_ADD_I1 gan_vec3_add_i1
#define GAN_VEC_ADD_I2 gan_vec3_add_i2
#define GAN_VEC_INCREMENT gan_vec3_increment
#define GAN_VEC_ADD_S gan_vec3_add_s
#define GAN_VEC_SUB_Q gan_vec3_sub_q
#define GAN_VEC_SUB_I1 gan_vec3_sub_i1
#define GAN_VEC_SUB_I2 gan_vec3_sub_i2
#define GAN_VEC_DECREMENT gan_vec3_decrement
#define GAN_VEC_SUB_S gan_vec3_sub_s
#define GAN_VEC_DOT_Q gan_vec3_dot_q
#define GAN_VEC_DOT_S gan_vec3_dot_s
#define GAN_VEC_SQRLEN_Q gan_vec3_sqrlen_q
#define GAN_VEC_SQRLEN_S gan_vec3_sqrlen_s
#define GAN_VEC_FROM_VEC_Q gan_vec3_from_vec_q
#define GAN_VEC_FROM_VEC_S gan_vec3_from_vec_s
Typedefs
typedef Gan_Vector3 Gan_Vector3
Structure definition for double precision floating point 3-vector.
typedef Gan_Vector3 Gan_Vector3_d
Structure definition for double precision floating point 3-vector.
typedef Gan_Vector3_uc Gan_Vector3_uc
Structure definition for unsigned character 3-vector.
typedef Gan_Vector3_s Gan_Vector3_s
Structure definition for short integer 3-vector.
typedef Gan_Vector3_us Gan_Vector3_us
Structure definition for unsigned short integer 3-vector.
typedef Gan_Vector3_i Gan_Vector3_i
Structure definition for integer 3-vector.
typedef Gan_Vector3_ui Gan_Vector3_ui
Structure definition for unsigned integer 3-vector.
Functions
Gan_Vector3 * gan_vec3_fill_q (Gan_Vector3 *p, double X, double Y, double Z)
Macro: Fill 3-vector with values.
Gan_Vector3 * gan_vec3_cross_q (const Gan_Vector3 *p, const Gan_Vector3 *q, Gan_Vector3 *r)
Macro: Compute vector product of 3-vectors.
Gan_Vector2 * gan_vec3_get_v2t_q (const Gan_Vector3 *p, Gan_Vector2 *q)
Macro: Extract top 2-vector part of 3-vector.
Gan_Vector3 * gan_vec3_set_parts_q (Gan_Vector3 *p, const Gan_Vector2 *q, double s)
Macro: Build 3-vector from 2-vector and scalar.
Gan_Vector3 * gan_vec3_zero_q (Gan_Vector3 *p)
Macro: Fill fixed size vector with zero.
Gan_Vector3 * gan_vec3_copy_q (Gan_Vector3 *p, Gan_Vector3 *q)
Macro: Copy fixed size vector.
Gan_Vector3 * gan_vec3_scale_q (Gan_Vector3 *p, double a, Gan_Vector3 *q)
Macro: Scale fixed size vector.
Gan_Vector3 * gan_vec3_scale_i (Gan_Vector3 *p, double a)
Macro: Scale fixed size vector.
Gan_Vector3 * gan_vec3_divide_q (Gan_Vector3 *p, double a, Gan_Vector3 *q)
Macro: Divide fixed size vector by scalar.
Gan_Vector3 * gan_vec3_divide_i (Gan_Vector3 *p, double a)
Macro: Divide fixed size vector by scalar.
Gan_Vector3 * gan_vec3_negate_q (Gan_Vector3 *p, Gan_Vector3 *q)
Macro: Negate fixed size vector.
Gan_Vector3 * gan_vec3_negate_i (Gan_Vector3 *p)
Macro: Negate fixed size vector.
Gan_Vector3 * gan_vec3_unit_i (Gan_Vector3 *p)
Macro: Scale vector to unit norm.
Gan_Vector3 * gan_vec3_add_q (Gan_Vector3 *p, Gan_Vector3 *q, Gan_Vector3 *r)
Macro: Add two fixed size vectors.
Gan_Vector3 * gan_vec3_add_i1 (Gan_Vector3 *p, Gan_Vector3 *q)
Macro: Add two fixed size vectors.
Gan_Vector3 * gan_vec3_add_i2 (Gan_Vector3 *p, Gan_Vector3 *q)
Macro: Add two fixed size vectors.
Gan_Vector3 * gan_vec3_increment (Gan_Vector3 *p, Gan_Vector3 *q)
Macro: Increment a fixed size vector by another.
Gan_Vector3 * gan_vec3_sub_q (Gan_Vector3 *p, Gan_Vector3 *q, Gan_Vector3 *r)
Macro: Subtract two fixed size vectors.
Gan_Vector3 * gan_vec3_sub_i1 (Gan_Vector3 *p, Gan_Vector3 *q)
Macro: Subtract two fixed size vectors.
Gan_Vector3 * gan_vec3_sub_i2 (Gan_Vector3 *p, Gan_Vector3 *q)
Macro: Subtract two fixed size vectors.
Gan_Vector3 * gan_vec3_decrement (Gan_Vector3 *p, Gan_Vector3 *q)
Macro: Decrement a fixed size vector by another.
double gan_vec3_dot_q (const Gan_Vector3 *p, const Gan_Vector3 *q)
Macro: Dot product of fixed size vectors.
double gan_vec3_sqrlen_q (const Gan_Vector3 *p)
Macro: Returns sum of squares of vector elements.

Detailed Description

Module: Size 3 vectors (double precision)

Part of: Gandalf Library

Version:

1.19

Date:

2005/04/15 02:15:23

Author:

pm

Copyright: (c) 2000 Imagineer Software Limited


Define Documentation

#define GAN_REP3_AS ( a,
b,
p1,
p2,
p3 ) (a p1 b, a p2 b, a p3 b)

| | File: RCSfilerepeat3_noc.h,v Module: Macros for 3-fold repetition of vector/matrix operations Part of: Gandalf LibraryRevision: Revision1.5 Last edited: Date2002/04/18 14:56:25 Author: Authorpm Copyright: (c) 2000 Imagineer Software LimitedNotes: Not to be compiled separately | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

#define GAN_TEST_OP1 ( A,
typeA ) assert(sizeof(*(A))==sizeof(typeA))

| | File: RCSfilematvecf_macros_noc.h,v Module: Matrix/vector macros Part of: Gandalf LibraryRevision: Revision1.6 Last edited: Date2002/04/18 14:56:25 Author: Authorpm Copyright: (c) 2000 Imagineer Software LimitedNotes: Not to be compiled separately | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

#define GAN_TEST_OP3 ( A,
B,
C,
typeA,
typeB,
typeC )

| | Value:(assert(sizeof(*(A))==sizeof(typeA)&&sizeof(*(B))==sizeof(typeB)&&\ sizeof(*(C))==sizeof(typeC))) | | ---------------------------------------------------------------------------------------------------------------------------- |

#define GAN_TEST_OP4 ( A,
B,
C,
D,
typeA,
typeB,
typeC,
typeD )

| | Value:(assert(sizeof(*(A))==sizeof(typeA)&&sizeof(*(B))==sizeof(typeB)&&\ sizeof(*(C))==sizeof(typeC)&&sizeof(*(D))==sizeof(typeD))) | | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |

#define GAN_TEST_OP5 ( A,
B,
C,
D,
E,
typeA,
typeB,
typeC,
typeD,
typeE )

| | Value:(assert(sizeof(*(A))==sizeof(typeA)&&sizeof(*(B))==sizeof(typeB)&&\ sizeof(*(C))==sizeof(typeC)&&sizeof(*(D))==sizeof(typeD)&&\ sizeof(*(E))==sizeof(typeE))) | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


Generated on Fri Mar 17 12:44:49 2006 by doxygen 1.3.9.1