All pastes #971766 Raw Edit

Mine

public cpp v1 · immutable
·published 2008-04-04 23:18 UTC
rendered paste body
VOID AnglesToAxis( const vec3_t angles, vec3_t axis[3] ){	vec3_t	right;	// angle vectors returns "right" instead of "y axis"	AngleVectors( angles, axis[0], right, axis[2] );	VectorSubtract( vec3_origin, right, axis[1] );}VOID VectorInverse( vec3_t v ){	v[0] = -v[0];	v[1] = -v[1];	v[2] = -v[2];}vec_t VectorLength( const vec3_t v ){	return (vec_t) sqrt (v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);}vec_t VectorDistance( const vec3_t p1, const vec3_t p2 ){	vec3_t	v;	VectorSubtract (p2, p1, v);	return VectorLength( v );}FLOAT AngleNormalize360 ( FLOAT angle ) {	return (360.0 / 65536) * ((int)(angle * (65536 / 360.0)) & 65535);}FLOAT AngleNormalize180 ( FLOAT angle ) {	angle = AngleNormalize360( angle );	if ( angle > 180.0 ) 	{		angle -= 360.0;	}	return angle;}VOID GetAngleToOrigin( vec3_t Origin, FLOAT &AngleX, FLOAT &AngleY ){	vec3_t entity, angle;	VectorSubtract( Origin, cg->refdef.vieworg, entity );    VectorAngles( entity, angle );    if ( angle[YAW] > 180.0f )			angle[YAW] -= 360.0f;    else if ( angle[YAW] < -180.0f )	angle[YAW] += 360.0f;    if ( angle[PITCH] > 180.0f )		angle[PITCH] -= 360.0f;    else if ( angle[PITCH] < -180.0f )	angle[PITCH] += 360.0f;    angle[YAW]		-= cg->refdefViewAngles[YAW];    angle[PITCH]	-= cg->refdefViewAngles[PITCH];    if ( angle[YAW] > 180.0f )			angle[YAW] -= 360.0f;    else if ( angle[YAW] < -180.0f )	angle[YAW] += 360.0f;    if ( angle[PITCH] > 180.0f )		angle[PITCH] -= 360.0f;    else if ( angle[PITCH] < -180.0f )	angle[PITCH] += 360.0f;    AngleX = angle[YAW];    AngleY = angle[PITCH];}VOID VectorAngles( const vec3_t value1, vec3_t angles ){	FLOAT	forward;	FLOAT	yaw, pitch;		if ( value1[1] == 0 && value1[0] == 0 ) 	{		yaw = 0;		if ( value1[2] > 0 ) 		pitch = 90;		else 						pitch = 270;	}	else	{		if ( value1[0] ) 			yaw = (FLOAT) ( atan2 ( value1[1], value1[0] ) * 180 / M_PI );		else if ( value1[1] > 0 )	yaw = 90;		else						yaw = 270;		if ( yaw < 0 )				yaw += 360;		forward = (FLOAT) sqrt ( value1[0]*value1[0] + value1[1]*value1[1] );		pitch = (FLOAT) ( atan2(value1[2], forward) * 180 / M_PI );		if ( pitch < 0 ) 			pitch += 360;	}	angles[PITCH] = -pitch;	angles[YAW] = yaw;	angles[ROLL] = 0;}VOID vectoangles( const vec3_t value1, vec3_t angles ) {	FLOAT	forward;	FLOAT	yaw, pitch;		if ( value1[1] == 0 && value1[0] == 0 ) 	{		yaw = 0;		if ( value1[2] > 0 ) 		{			pitch = 90;		}		else 		{			pitch = 270;		}	}	else 	{		if ( value1[0] ) 		{			yaw = ( atan2 ( value1[1], value1[0] ) * 180 / M_PI );		}		else if ( value1[1] > 0 ) 		{			yaw = 90;		}		else 		{			yaw = 270;		}		if ( yaw < 0 )		{			yaw += 360;		}		forward = sqrt ( value1[0]*value1[0] + value1[1]*value1[1] );		pitch = ( atan2(value1[2], forward) * 180 / M_PI );				if ( pitch < 0 ) 		{			pitch += 360;		}	}	angles[PITCH] = -pitch;	angles[YAW] = yaw;	angles[ROLL] = 0;}VOID AngleVectors( CONST vec3_t angles, vec3_t forward, vec3_t right, vec3_t up ) {	FLOAT			angle;	static FLOAT	sr, sp, sy, cr, cp, cy;	angle = (FLOAT) angles[YAW] * ( (FLOAT) M_PI*2 / 360);	sy= (FLOAT) sin(angle);	cy = (FLOAT) cos(angle);	angle = (FLOAT) angles[PITCH] * ( (FLOAT) M_PI*2 / 360);	sp = (FLOAT) sin(angle);	cp = (FLOAT) cos(angle);	angle = (FLOAT) angles[ROLL] * (( FLOAT) M_PI*2 / 360);	sr = (FLOAT) sin(angle);	cr = (FLOAT) cos(angle);	if ( forward ) 	{		forward[0] = cp*cy;		forward[1] = cp*sy;		forward[2] = -sp;	}	if ( right ) 	{		right[0] = (-1*sr*sp*cy+-1*cr*-sy);		right[1] = (-1*sr*sp*sy+-1*cr*cy);		right[2] = -1*sr*cp;	}	if ( up ) 	{		up[0] = (cr*sp*cy+-sr*-sy);		up[1] = (cr*sp*sy+-sr*cy);		up[2] = cr*cp;	}}