#include #include #include #include "point.h" /* --------------------------------------------------------------------- */ point * Create_point () { point * ptr ; ptr = (point *) calloc( 1 , sizeof(point) ) ; return ptr ; } /* --------------------------------------------------------------------- */ void Destroy_point (point * ptr) { free(ptr) ; } /* --------------------------------------------------------------------- */ void Load_point ( point * pt , float x , float y , float z ) { pt->x = x ; pt->y = y ; pt->z = z ; } /* --------------------------------------------------------------------- */ void Print_point ( point pt , FILE * stream ) { char message[100] ; char format[] = "x=%7.3f y=%7.3f z=%7.3f\n" ; sprintf ( message , format , pt.x , pt.y , pt.z ) ; if ( stream ) fprintf(stream,message) ; else printf(message) ; } /* --------------------------------------------------------------------- */ float radius ( point pt ) { return (float) sqrt( (double)(pt.x*pt.x) + (double)(pt.y*pt.y) + (double)(pt.z*pt.z) ) ; } /* --------------------------------------------------------------------- */ point sum ( point p1 , point p2 ) { point p ; p.x = p1.x + p2.x ; p.y = p1.y + p2.y ; p.z = p1.z + p2.z ; return p ; } /* --------------------------------------------------------------------- */ point diff ( point p1 , point p2 ) { point p ; p.x = p1.x - p2.x ; p.y = p1.y - p2.y ; p.z = p1.z - p2.z ; return p ; } /* --------------------------------------------------------------------- */ point scale ( point p1 , float d ) { point p ; p.x = p1.x * d ; p.y = p1.y * d ; p.z = p1.z * d ; return p ; } /* --------------------------------------------------------------------- */ float dist ( point p1 , point p2 ) { return radius ( diff ( p1 , p2 ) ) ; }