UF_VEC2_add (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Performs a two dimensional vector addition and returns the vector
sum in vec_sum[2].

·µ»Ø
void

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_add
(
const double vec1 [ 2 ] ,
const double vec2 [ 2 ] ,
double vec_sum [ 2 ]
)
const doublevec1 [ 2 ] Input£¨ÊäÈ룩Vector #1
const doublevec2 [ 2 ] Input£¨ÊäÈ룩Vector #2
double (ʵÊýÐÍ)vec_sum [ 2 ] Output£¨Êä³ö£©The vector sum of vectors one and two
vec_sum = vec1 + vec2

 


 
UF_VEC2_affine_comb (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Performs a vector affine combination which consists of adding an
unscaled vector to a scaled vector. The first vector you input is vec[2],
which is unscaled. The second vector you input is the vec_to_scale[2],
which is scaled by the input argument scale. The resultant vector is
output to vec_comb[2].

·µ»Ø
Void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_affine_comb
(
const double vec [ 2 ] ,
double scale,
const double vec_to_scale [ 2 ] ,
double vec_comb [ 2 ]
)
const doublevec [ 2 ] Input£¨ÊäÈ룩Unscaled vector
double (ʵÊýÐÍ)scaleInput£¨ÊäÈ룩Scale to apply to vec_to_scale[2]
const doublevec_to_scale [ 2 ] Input£¨ÊäÈ룩The second two dimensional vector which is scaled.
double (ʵÊýÐÍ)vec_comb [ 2 ] Output£¨Êä³ö£©Vector sum of unscaled vector and scaled vector
where vec_comb = vec + (scale vec_to_scale)

 


 
UF_VEC2_ask_perpendicular (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Returns a 2D vector that is perpendicular to the input vector

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_ask_perpendicular
(
const double vec1 [ 2 ] ,
double vec_perp [ 2 ]
)
const doublevec1 [ 2 ] Input£¨ÊäÈ룩2D vector
double (ʵÊýÐÍ)vec_perp [ 2 ] Output£¨Êä³ö£©2D vector

 


 
UF_VEC2_components (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the scale factors of a linear combination of two vectors that
form a third vector. The vector combination is equal to the sum of the
two scaled vectors ( i.e., vec_comb = scale1 vec1 + scale2 + vec2).

·µ»Ø
0 = Scale factors can be calculated
1 = Input vectors are parallel

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
int UF_VEC2_components
(
const double vec1 [ 2 ] ,
const double vec2 [ 2 ] ,
const double vec_comb [ 2 ] ,
double tolerance,
double * scale1,
double * scale2
)
const doublevec1 [ 2 ] Input£¨ÊäÈ룩First vector of linear combination
const doublevec2 [ 2 ] Input£¨ÊäÈ룩Second vector of linear combination
const doublevec_comb [ 2 ] Input£¨ÊäÈ룩Linear combination of vec1 and vec2
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩Tolerance value to use for checking whether vec1
and vec2 are parallel
double * (ʵÊýÐÍÖ¸Õë)scale1Output£¨Êä³ö£©Scale factor of vec1 in linear combination
double * (ʵÊýÐÍÖ¸Õë)scale2Output£¨Êä³ö£©Scale factor of vec2 in linear combination

 


 
UF_VEC2_convex_comb (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the position of a point between the two end points of a line
segment. The point on the line segment is defined by:
pnt_on_seg = (parameter pnt1) + ((1.0 - parameter) pnt2).

»·¾³
ÄÚ²¿ºÍÍⲿ

·µ»Ø
Void.
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_convex_comb
(
double parameter,
const double pnt1 [ 2 ] ,
const double pnt2 [ 2 ] ,
double pnt_on_seg [ 2 ]
)
double (ʵÊýÐÍ)parameterInput£¨ÊäÈ룩Parameter of point to calculate
const doublepnt1 [ 2 ] Input£¨ÊäÈ룩First end point of line segment
const doublepnt2 [ 2 ] Input£¨ÊäÈ룩Second end point of line segment
double (ʵÊýÐÍ)pnt_on_seg [ 2 ] Output£¨Êä³ö£©Point on line segment

 


 
UF_VEC2_copy (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Copies the vector coordinates from a source vector to a destination
vector (vec_dst = vec_src).

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_copy
(
const double vec_src [ 2 ] ,
double vec_dst [ 2 ]
)
const doublevec_src [ 2 ] Input£¨ÊäÈ룩Source vector
double (ʵÊýÐÍ)vec_dst [ 2 ] Output£¨Êä³ö£©Destination vector

 


 
UF_VEC2_cross (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the cross product of two vectors.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_cross
(
const double vec1 [ 2 ] ,
const double vec2 [ 2 ] ,
double * cross_product
)
const doublevec1 [ 2 ] Input£¨ÊäÈ룩Vector 1
const doublevec2 [ 2 ] Input£¨ÊäÈ룩Vector 2
double * (ʵÊýÐÍÖ¸Õë)cross_productOutput£¨Êä³ö£©The cross product of vec1 and vec2
cross_product = vec1 x vec2

 


 
UF_VEC2_distance (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the distance between two points.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_distance
(
const double pnt1 [ 2 ] ,
const double pnt2 [ 2 ] ,
double * distance
)
const doublepnt1 [ 2 ] Input£¨ÊäÈ룩Point 1
const doublepnt2 [ 2 ] Input£¨ÊäÈ룩Point 2
double * (ʵÊýÐÍÖ¸Õë)distanceOutput£¨Êä³ö£©The distance between pnt1 and pnt2
(distance = ||pnt1 - pnt2||)

 


 
UF_VEC2_dot (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the dot product of vec1 and vec2.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_dot
(
const double vec1 [ 2 ] ,
const double vec2 [ 2 ] ,
double * dot_product
)
const doublevec1 [ 2 ] Input£¨ÊäÈ룩Vector 1
const doublevec2 [ 2 ] Input£¨ÊäÈ룩Vector 2
double * (ʵÊýÐÍÖ¸Õë)dot_productOutput£¨Êä³ö£©The dot product of vec1 and vec2
dot_product = vec1 (dot) vec2

 


 
UF_VEC2_is_equal (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Determines if two vectors are equal within the specified tolerance.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_is_equal
(
const double vec1 [ 2 ] ,
const double vec2 [ 2 ] ,
double tolerance,
int * is_equal
)
const doublevec1 [ 2 ] Input£¨ÊäÈ룩Vector 1
const doublevec2 [ 2 ] Input£¨ÊäÈ룩Vector 2
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩Tolerance value to use for checking
int * (ÕûÊýÐÍÖ¸Õë)is_equalOutput£¨Êä³ö£©0 = Vectors are not equal
1 = Vectors are equal

 


 
UF_VEC2_is_parallel (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Determine if vectors are parallel within an input tolerance

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_is_parallel
(
const double vec1 [ 2 ] ,
const double vec2 [ 2 ] ,
double tolerance,
int * is_parallel
)
const doublevec1 [ 2 ] Input£¨ÊäÈ룩2D vector
const doublevec2 [ 2 ] Input£¨ÊäÈ룩2D vector
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩tolerance
int * (ÕûÊýÐÍÖ¸Õë)is_parallelOutput£¨Êä³ö£©= 0 Vectors are not parallel
= 1 Vectors are parallel

 


 
UF_VEC2_is_perpendicular (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Determine if vectors are perpendicular within an input tolerance

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_is_perpendicular
(
const double vec1 [ 2 ] ,
const double vec2 [ 2 ] ,
double tolerance,
int * is_perp
)
const doublevec1 [ 2 ] Input£¨ÊäÈ룩2D vector
const doublevec2 [ 2 ] Input£¨ÊäÈ룩2D vector
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩tolerance
int * (ÕûÊýÐÍÖ¸Õë)is_perpOutput£¨Êä³ö£©= 0 Vectors are not perpendicular
= 1 Vectors are perpendicular

 


 
UF_VEC2_is_zero (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Determines if a vector is zero within the specified tolerance.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_is_zero
(
const double vec [ 2 ] ,
double tolerance,
int * is_zero
)
const doublevec [ 2 ] Input£¨ÊäÈ룩Vector to test
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩Tolerance value to use for checking
int * (ÕûÊýÐÍÖ¸Õë)is_zeroOutput£¨Êä³ö£©0 = Vectors is not zero
1 = Vectors is zero

 


 
UF_VEC2_linear_comb (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the vector linear combination of two vectors with the
specified scale values.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_linear_comb
(
double scale1,
const double vec1 [ 2 ] ,
double scale2,
const double vec2 [ 2 ] ,
double vec_comb [ 2 ]
)
double (ʵÊýÐÍ)scale1Input£¨ÊäÈ룩Scale value for vector 1
const doublevec1 [ 2 ] Input£¨ÊäÈ룩Vector 1
double (ʵÊýÐÍ)scale2Input£¨ÊäÈ룩scale for vector 2
const doublevec2 [ 2 ] Input£¨ÊäÈ룩Vector 2
double (ʵÊýÐÍ)vec_comb [ 2 ] Output£¨Êä³ö£©Vector linear combination
vec_comb = (scale vec1) + (scale2 vec2)

 


 
UF_VEC2_mag (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the magnitude of a vector.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_mag
(
const double vec [ 2 ] ,
double * magnitude
)
const doublevec [ 2 ] Input£¨ÊäÈ룩Vector whose magnitude is required
double * (ʵÊýÐÍÖ¸Õë)magnitudeOutput£¨Êä³ö£©Magnitude of vector
magnitude = ||vec||

 


 
UF_VEC2_midpt (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the coordinates of the mid-point on a line segment.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_midpt
(
const double pnt1 [ 2 ] ,
const double pnt2 [ 2 ] ,
double mid_pnt [ 2 ]
)
const doublepnt1 [ 2 ] Input£¨ÊäÈ룩End Point #1 of line segment
const doublepnt2 [ 2 ] Input£¨ÊäÈ룩End Point #2 of line segment
double (ʵÊýÐÍ)mid_pnt [ 2 ] Output£¨Êä³ö£©Mid-point of line segment
mid_pnt = (0.5 pnt1) + (0.5 pnt2)

 


 
UF_VEC2_negate (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the negative of a vector.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_negate
(
const double vec [ 2 ] ,
double negated_vec [ 2 ]
)
const doublevec [ 2 ] Input£¨ÊäÈ룩Vector to negate
double (ʵÊýÐÍ)negated_vec [ 2 ] Output£¨Êä³ö£©Negated vector
negated_vec = (-1.0) x vec

 


 
UF_VEC2_rotate (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Rotates a 2D vector about a line perpendicular to the plane of the
vector through the vector origin.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_rotate
(
const double vec [ 2 ] ,
double angle,
double rotated_vec [ 2 ]
)
const doublevec [ 2 ] Input£¨ÊäÈ룩Vector to rotate
double (ʵÊýÐÍ)angleInput£¨ÊäÈ룩Angle to rotate through (in radians)
double (ʵÊýÐÍ)rotated_vec [ 2 ] Output£¨Êä³ö£©Rotated vector

 


 
UF_VEC2_scale (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Scales the coordinates of a vector.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_scale
(
double scale,
const double vec [ 2 ] ,
double scaled_vec [ 2 ]
)
double (ʵÊýÐÍ)scaleInput£¨ÊäÈ룩Scale factor
const doublevec [ 2 ] Input£¨ÊäÈ룩Vector to scale
double (ʵÊýÐÍ)scaled_vec [ 2 ] Output£¨Êä³ö£©scaled vector
scaled_vec = (scale x vec)

 


 
UF_VEC2_sub (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Subtracts one 2D vector from another.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_sub
(
const double vec1 [ 2 ] ,
const double vec2 [ 2 ] ,
double vec_diff [ 2 ]
)
const doublevec1 [ 2 ] Input£¨ÊäÈ룩Vector to subtract from
const doublevec2 [ 2 ] Input£¨ÊäÈ룩Vector to subtract
double (ʵÊýÐÍ)vec_diff [ 2 ] Output£¨Êä³ö£©Vector difference
vec_diff = vec1 - vec2

 


 
UF_VEC2_unitize (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Unitizes a 2D vector.

·µ»Ø
0 = Success (unit vector can be calculated)
1 = input vector is zero

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
int UF_VEC2_unitize
(
const double vec [ 2 ] ,
double tolerance,
double * magnitude,
double unit_vec [ 2 ]
)
const doublevec [ 2 ] Input£¨ÊäÈ룩Vector to unitize
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩Tolerance value to use for checking
double * (ʵÊýÐÍÖ¸Õë)magnitudeOutput£¨Êä³ö£©Vector magnitude = øvecø
double (ʵÊýÐÍ)unit_vec [ 2 ] Output£¨Êä³ö£©Unitized vector = vec/øvecø

 


 
UF_VEC2_vec3 (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Converts a 2D vector to a 3D vector. Sets the Z-coordinate to zero.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC2_vec3
(
const double vec_2D [ 2 ] ,
double vec_3D [ 3 ]
)
const doublevec_2D [ 2 ] Input£¨ÊäÈ룩2D vector to convert to 3D
double (ʵÊýÐÍ)vec_3D [ 3 ] Output£¨Êä³ö£©3D vector

 


 
UF_VEC3_add (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Performs a three dimensional vector addition and returns the vector
sum in vec_sum[3].

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_add
(
const double vec1 [ 3 ] ,
const double vec2 [ 3 ] ,
double vec_sum [ 3 ]
)
const doublevec1 [ 3 ] Input£¨ÊäÈ룩The first three dimensional vector
const doublevec2 [ 3 ] Input£¨ÊäÈ룩The second three dimensional vector
double (ʵÊýÐÍ)vec_sum [ 3 ] Output£¨Êä³ö£©The vector sum of vectors one and two
vec_sum = vec1 + vec2

 


 
UF_VEC3_affine_comb (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Performs a vector affine combination which consists of adding an
unscaled vector to a scaled vector. The first vector you input is vec[3],
which is unscaled. The second vector you input is the vec_to_scale[3]
which is scaled by the input argument scale. The resultant vector is
output to vec_comb[3].

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_affine_comb
(
const double vec [ 3 ] ,
double scale,
const double vec_to_scale [ 3 ] ,
double vec_comb [ 3 ]
)
const doublevec [ 3 ] Input£¨ÊäÈ룩Unscaled vector
double (ʵÊýÐÍ)scaleInput£¨ÊäÈ룩Scale to apply to vec_to_scale[3]
const doublevec_to_scale [ 3 ] Input£¨ÊäÈ룩The second three dimensional vector which is scaled.
double (ʵÊýÐÍ)vec_comb [ 3 ] Output£¨Êä³ö£©Vector sum of unscaled vector and scaled vector
where vec_comb = vec + (scale vec_to_scale)

 


 
UF_VEC3_angle_between (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the angle between two vectors using a third vector to
determine the direction. The third vector is one that is perpendicular
to both the vec_from and vec_to vectors. For example, if the two
vectors lie in the x-y plane, then the third vector would be parallel to
the z-axis.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_angle_between
(
const double vec_from [ 3 ] ,
const double vec_to [ 3 ] ,
const double vec_ccw [ 3 ] ,
double * angle
)
const doublevec_from [ 3 ] Input£¨ÊäÈ룩Vector to calculate angle from
const doublevec_to [ 3 ] Input£¨ÊäÈ룩Vector to calculate angle to
const doublevec_ccw [ 3 ] Input£¨ÊäÈ룩Vector to define counter-clockwise orientation
double * (ʵÊýÐÍÖ¸Õë)angleOutput£¨Êä³ö£©Angle between vec_from and vec_to using vec_ccw
to determine positive orientation. The angle is in
radians and 0.0 <= (angle) < 2 PI.

 


 
UF_VEC3_ask_perpendicular (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Returns a 3D vector that is perpendicular to the input vector

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_ask_perpendicular
(
const double vec1 [ 3 ] ,
double vec_perp [ 3 ]
)
const doublevec1 [ 3 ] Input£¨ÊäÈ룩3D vector
double (ʵÊýÐÍ)vec_perp [ 3 ] Output£¨Êä³ö£©3D vector perpendicular to the first
vector.

 


 
UF_VEC3_convex_comb (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the position of a point between the two end points of a line
segment. The point on the line segment is defined by:
pnt_on_seg = (parameter pnt1) + ((1.0 - parameter) pnt2).

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_convex_comb
(
double parameter,
const double pnt1 [ 3 ] ,
const double pnt2 [ 3 ] ,
double pnt_on_seg [ 3 ]
)
double (ʵÊýÐÍ)parameterInput£¨ÊäÈ룩Parameter of point to calculate
const doublepnt1 [ 3 ] Input£¨ÊäÈ룩First end point of line segment
const doublepnt2 [ 3 ] Input£¨ÊäÈ룩Second end point of line segment
double (ʵÊýÐÍ)pnt_on_seg [ 3 ] Output£¨Êä³ö£©Point on line segment

 


 
UF_VEC3_copy (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Copies the vector coordinates from a source vector to a destination
vector (vec_dst = vec_src).

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_copy
(
const double vec_src [ 3 ] ,
double vec_dst [ 3 ]
)
const doublevec_src [ 3 ] Input£¨ÊäÈ룩Source vector
double (ʵÊýÐÍ)vec_dst [ 3 ] Output£¨Êä³ö£©Destination vector

 


 
UF_VEC3_cross (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the cross product of two vectors.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_cross
(
const double vec1 [ 3 ] ,
const double vec2 [ 3 ] ,
double cross_product [ 3 ]
)
const doublevec1 [ 3 ] Input£¨ÊäÈ룩Vector 1
const doublevec2 [ 3 ] Input£¨ÊäÈ룩Vector 2
double (ʵÊýÐÍ)cross_product [ 3 ] Output£¨Êä³ö£©The cross product of vec1 and vec2
cross_product = vec1 vec2

 


 
UF_VEC3_distance (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the distance between two points.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_distance
(
const double pnt1 [ 3 ] ,
const double pnt2 [ 3 ] ,
double * distance
)
const doublepnt1 [ 3 ] Input£¨ÊäÈ룩Point 1
const doublepnt2 [ 3 ] Input£¨ÊäÈ룩Point 2
double * (ʵÊýÐÍÖ¸Õë)distanceOutput£¨Êä³ö£©The distance between pnt1 and pnt2
(distance = ||pnt1 - pnt2||)

 


 
UF_VEC3_distance_to_plane (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the normal distance from a point to a plane.

·µ»Ø
0 = Success (distance can be calculated)
1 = The plane normal is zero

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
int UF_VEC3_distance_to_plane
(
const double pnt1 [ 3 ] ,
const double pnt_on_plane [ 3 ] ,
const double plane_normal [ 3 ] ,
double tolerance,
double * distance
)
const doublepnt1 [ 3 ] Input£¨ÊäÈ룩Point to calculate distance from
const doublepnt_on_plane [ 3 ] Input£¨ÊäÈ룩Point located on the plane
const doubleplane_normal [ 3 ] Input£¨ÊäÈ룩Plane normal
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩Tolerance value to use for checking
double * (ʵÊýÐÍÖ¸Õë)distanceOutput£¨Êä³ö£©The normal distance from the point to the plane

 


 
UF_VEC3_dot (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the dot product of vec1 and vec2.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_dot
(
const double vec1 [ 3 ] ,
const double vec2 [ 3 ] ,
double * dot_product
)
const doublevec1 [ 3 ] Input£¨ÊäÈ룩Vector 1
const doublevec2 [ 3 ] Input£¨ÊäÈ룩Vector 2
double * (ʵÊýÐÍÖ¸Õë)dot_productOutput£¨Êä³ö£©The dot product of vec1 and vec2
dot_product = vec1 (dot) vec2

 


 
UF_VEC3_is_equal (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Determines if two vectors are equal within the specified tolerance.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_is_equal
(
const double vec1 [ 3 ] ,
const double vec2 [ 3 ] ,
double tolerance,
int * is_equal
)
const doublevec1 [ 3 ] Input£¨ÊäÈ룩Vector 1
const doublevec2 [ 3 ] Input£¨ÊäÈ룩Vector 2
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩Tolerance value to use for checking
int * (ÕûÊýÐÍÖ¸Õë)is_equalOutput£¨Êä³ö£©0 = Vectors are not equal
1 = Vectors are equal

 


 
UF_VEC3_is_parallel (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Determine if vectors are parallel within an input tolerance

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_is_parallel
(
const double vec1 [ 3 ] ,
const double vec2 [ 3 ] ,
double tolerance,
int * is_parallel
)
const doublevec1 [ 3 ] Input£¨ÊäÈ룩3D vector
const doublevec2 [ 3 ] Input£¨ÊäÈ룩3D vector
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩tolerance
int * (ÕûÊýÐÍÖ¸Õë)is_parallelOutput£¨Êä³ö£©= 0 Vectors are not parallel
= 1 Vectors are parallel

 


 
UF_VEC3_is_perpendicular (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Determine if vectors are perpendicular an input tolerance

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_is_perpendicular
(
const double vec1 [ 3 ] ,
const double vec2 [ 3 ] ,
double tolerance,
int * is_perp
)
const doublevec1 [ 3 ] Input£¨ÊäÈ룩3D vector
const doublevec2 [ 3 ] Input£¨ÊäÈ룩3D vector
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩tolerance
int * (ÕûÊýÐÍÖ¸Õë)is_perpOutput£¨Êä³ö£©= 0 Vectors are not perpendicular
= 1 Vectors are perpendicular

 


 
UF_VEC3_is_zero (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Determines if a vector is zero within the specified tolerance.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_is_zero
(
const double vec [ 3 ] ,
double tolerance,
int * is_zero
)
const doublevec [ 3 ] Input£¨ÊäÈ룩Vector to test
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩Tolerance value to use for checking
int * (ÕûÊýÐÍÖ¸Õë)is_zeroOutput£¨Êä³ö£©0 = Vectors is not zero
1 = Vectors is zero

 


 
UF_VEC3_linear_comb (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the vector linear combination of two vectors with the
specified scale values.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_linear_comb
(
double scale1,
const double vec1 [ 3 ] ,
double scale2,
const double vec2 [ 3 ] ,
double vec_comb [ 3 ]
)
double (ʵÊýÐÍ)scale1Input£¨ÊäÈ룩Scale value for vector 1
const doublevec1 [ 3 ] Input£¨ÊäÈ룩Vector 1
double (ʵÊýÐÍ)scale2Input£¨ÊäÈ룩scale for vector 2
const doublevec2 [ 3 ] Input£¨ÊäÈ룩Vector 2
double (ʵÊýÐÍ)vec_comb [ 3 ] Output£¨Êä³ö£©Vector linear combination
vec_comb = (scale vec1) + (scale2 vec2)

 


 
UF_VEC3_mag (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the magnitude of a vector.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_mag
(
const double vec [ 3 ] ,
double * magnitude
)
const doublevec [ 3 ] Input£¨ÊäÈ룩Vector whose magnitude is required
double * (ʵÊýÐÍÖ¸Õë)magnitudeOutput£¨Êä³ö£©Magnitude of vector
magnitude = ||vec||

 


 
UF_VEC3_midpt (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the coordinates of the mid-point on a line segment.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_midpt
(
const double pnt1 [ 3 ] ,
const double pnt2 [ 3 ] ,
double mid_pnt [ 3 ]
)
const doublepnt1 [ 3 ] Input£¨ÊäÈ룩End Point #1 of line segment
const doublepnt2 [ 3 ] Input£¨ÊäÈ룩End Point #2 of line segment
double (ʵÊýÐÍ)mid_pnt [ 3 ] Output£¨Êä³ö£©Mid-point of line segment
mid_pnt = (0.5 pnt1) + (0.5 pnt2)

 


 
UF_VEC3_negate (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the negative of a vector.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_negate
(
const double vec [ 3 ] ,
double negated_vec [ 3 ]
)
const doublevec [ 3 ] Input£¨ÊäÈ룩Vector to negate
double (ʵÊýÐÍ)negated_vec [ 3 ] Output£¨Êä³ö£©Negated vector
negated_vec = (-1.0) vec

 


 
UF_VEC3_scale (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Scales the coordinates of a vector.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_scale
(
double scale,
const double vec [ 3 ] ,
double scaled_vec [ 3 ]
)
double (ʵÊýÐÍ)scaleInput£¨ÊäÈ룩Scale factor
const doublevec [ 3 ] Input£¨ÊäÈ룩Vector to scale
double (ʵÊýÐÍ)scaled_vec [ 3 ] Output£¨Êä³ö£©scaled vector
scaled_vec = (scale x vec)

 


 
UF_VEC3_sub (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Subtracts one vector from another.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_sub
(
const double vec1 [ 3 ] ,
const double vec2 [ 3 ] ,
double vec_diff [ 3 ]
)
const doublevec1 [ 3 ] Input£¨ÊäÈ룩Vector to subtract from
const doublevec2 [ 3 ] Input£¨ÊäÈ룩Vector to subtract
double (ʵÊýÐÍ)vec_diff [ 3 ] Output£¨Êä³ö£©Vector difference
vec_diff = vec1 - vec2

 


 
UF_VEC3_triple (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Calculates the triple scalar product of three vectors.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_triple
(
const double vec1 [ 3 ] ,
const double vec2 [ 3 ] ,
const double vec3 [ 3 ] ,
double * triple_product
)
const doublevec1 [ 3 ] Input£¨ÊäÈ룩Vector #1
const doublevec2 [ 3 ] Input£¨ÊäÈ룩Vector #2
const doublevec3 [ 3 ] Input£¨ÊäÈ룩Vector #3
double * (ʵÊýÐÍÖ¸Õë)triple_productOutput£¨Êä³ö£©The triple scalar product
triple_product = vec1 (dot) (vec2 x vec3)

 


 
UF_VEC3_unitize (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Unitizes a vector.

·µ»Ø
0 = Success (unit vector can be calculated)
1 = input vector is zero

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
int UF_VEC3_unitize
(
const double vec [ 3 ] ,
double tolerance,
double * magnitude,
double unit_vec [ 3 ]
)
const doublevec [ 3 ] Input£¨ÊäÈ룩Vector to unitize
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩Tolerance value to use for checking
double * (ʵÊýÐÍÖ¸Õë)magnitudeOutput£¨Êä³ö£©Vector magnitude = ||vec||
double (ʵÊýÐÍ)unit_vec [ 3 ] Output£¨Êä³ö£©Unitized vector = vec/||vec||

 


 
UF_VEC3_vec2 (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Converts a 3D vector to a 2D vector. Strips the Z-coordinate of the
3D vector.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_vec2
(
const double vec_3D [ 3 ] ,
double vec_2D [ 2 ]
)
const doublevec_3D [ 3 ] Input£¨ÊäÈ룩3D vector to convert to 2D
double (ʵÊýÐÍ)vec_2D [ 2 ] Output£¨Êä³ö£©2D vector

 


 
UF_VEC3_vec4 (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Converts a 3D vector to a 4D homogeneous vector with a weight of
1.0.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_vec4
(
const double vec_3D [ 3 ] ,
double vec_4D [ 4 ]
)
const doublevec_3D [ 3 ] Input£¨ÊäÈ룩3D vector to convert to 4D
double (ʵÊýÐÍ)vec_4D [ 4 ] Output£¨Êä³ö£©4D vector

 


 
UF_VEC3_vec4_homogen (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Converts a 3D vector to a 4D homogeneous vector with the given
weight. The 3D coordinates are multiplied by the specified weight. If
the 3D coordinates are (x,y,z) and the weight = h, then the 4D
coordinates would be (hx,hy,hz,h).

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC3_vec4_homogen
(
const double vec_3D [ 3 ] ,
double weight,
double vec_4D [ 4 ]
)
const doublevec_3D [ 3 ] Input£¨ÊäÈ룩3D vector to convert
double (ʵÊýÐÍ)weightInput£¨ÊäÈ룩Weight to be used
double (ʵÊýÐÍ)vec_4D [ 4 ] Output£¨Êä³ö£©4D homogeneous vector

 


 
UF_VEC4_copy (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Copies the vector coordinates from a source vector to a destination
vector (vec_dst = vec_src).

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC4_copy
(
const double vec_src [ 4 ] ,
double vec_dst [ 4 ]
)
const doublevec_src [ 4 ] Input£¨ÊäÈ룩Source vector
double (ʵÊýÐÍ)vec_dst [ 4 ] Output£¨Êä³ö£©Destination vector

 


 
UF_VEC4_is_equal (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Determines if two vectors are equal within the specified tolerance.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC4_is_equal
(
const double vec1 [ 4 ] ,
const double vec2 [ 4 ] ,
double tolerance,
int * is_equal
)
const doublevec1 [ 4 ] Input£¨ÊäÈ룩Vector #1
const doublevec2 [ 4 ] Input£¨ÊäÈ룩Vector #2
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩Tolerance value to use for checking
int * (ÕûÊýÐÍÖ¸Õë)is_equalOutput£¨Êä³ö£©0 = Vectors are not equal
1 = Vectors are equal

 


 
UF_VEC4_is_zero (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Determines if a vector is zero within the specified tolerance.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC4_is_zero
(
const double vec [ 4 ] ,
double tolerance,
int * is_zero
)
const doublevec [ 4 ] Input£¨ÊäÈ룩Vector to test
double (ʵÊýÐÍ)toleranceInput£¨ÊäÈ룩Tolerance value to use for checking
int * (ÕûÊýÐÍÖ¸Õë)is_zeroOutput£¨Êä³ö£©0 = Vector is not zero
1 = Vector is zero

 


 
UF_VEC4_scale (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Scales the coordinates of a vector.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC4_scale
(
double scale,
const double vec [ 4 ] ,
double scaled_vec [ 4 ]
)
double (ʵÊýÐÍ)scaleInput£¨ÊäÈ룩Scale factor
const doublevec [ 4 ] Input£¨ÊäÈ룩Vector to scale
double (ʵÊýÐÍ)scaled_vec [ 4 ] Output£¨Êä³ö£©scaled vector
scaled_vec = (scale x vec)

 


 
UF_VEC4_vec3 (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Converts a 4D vector to a 3D vector by stripping the weight of the 4D
vector.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC4_vec3
(
const double vec_4D [ 4 ] ,
double vec_3D [ 3 ]
)
const doublevec_4D [ 4 ] Input£¨ÊäÈ룩4D vector to convert to 3D
double (ʵÊýÐÍ)vec_3D [ 3 ] Output£¨Êä³ö£©3D vector

 


 
UF_VEC4_vec3_homogen (²é¿´Ô´´úÂë)
 
¶¨ÒåÔÚ: uf_vec.h
 
¸ÅÊö
Converts a 4D homogeneous vector to a 3D vector by dividing the 4D
coordinates by the weight.

·µ»Ø
void.

»·¾³
ÄÚ²¿ºÍÍⲿ
 
ÐèÒªÐí¿ÉÖ¤£¨S£©
gateway £¨UGÈë¿Ú»ù±¾Ä£¿é£¬GatewayÊÇËùÓÐÆäËüUuigraphicsÄ£¿éµÄÒ»¸ö±ØÒªÌõ¼þ£©

 
void UF_VEC4_vec3_homogen
(
const double vec_4D [ 4 ] ,
double vec_3D [ 3 ]
)
const doublevec_4D [ 4 ] Input£¨ÊäÈ룩4D vector to convert
double (ʵÊýÐÍ)vec_3D [ 3 ] Output£¨Êä³ö£©3D vector