*
* This program is free software. Feel free to use, modify, and/or redistribute
* it under the terms of the MIT/X11 license. See LICENSE for details.
*
* This program is free software. Feel free to use, modify, and/or redistribute
* it under the terms of the MIT/X11 license. See LICENSE for details.
static CGM_INLINE void cgm_vcons(cgm_vec3 *v, float x, float y, float z);
static CGM_INLINE cgm_vec3 cgm_vvec(float x, float y, float z);
static CGM_INLINE void cgm_vcons(cgm_vec3 *v, float x, float y, float z);
static CGM_INLINE cgm_vec3 cgm_vvec(float x, float y, float z);
static CGM_INLINE void cgm_vadd(cgm_vec3 *a, const cgm_vec3 *b);
static CGM_INLINE void cgm_vadd_scaled(cgm_vec3 *a, const cgm_vec3 *b, float s); /* a+b*s */
static CGM_INLINE void cgm_vsub(cgm_vec3 *a, const cgm_vec3 *b);
static CGM_INLINE void cgm_vadd(cgm_vec3 *a, const cgm_vec3 *b);
static CGM_INLINE void cgm_vadd_scaled(cgm_vec3 *a, const cgm_vec3 *b, float s); /* a+b*s */
static CGM_INLINE void cgm_vsub(cgm_vec3 *a, const cgm_vec3 *b);
static CGM_INLINE void cgm_uvec_to_sph(float *theta, float *phi, const cgm_vec3 *v);
static CGM_INLINE void cgm_sph_to_uvec(cgm_vec3 *v, float theta, float phi);
static CGM_INLINE void cgm_uvec_to_sph(float *theta, float *phi, const cgm_vec3 *v);
static CGM_INLINE void cgm_sph_to_uvec(cgm_vec3 *v, float theta, float phi);