/* 
 * Vec.h - vector abstract data type include file.
 * 
 * Author:   L. Van Warren
 * Date:     April 1984
 * Copyright (c) 1984-1995 L. Van Warren * All Rights Reserved
 */



typedef struct
{
	double x[4];
} Vec;

extern Vec asnVec(double, double, double, double);
extern Vec addVec(Vec, Vec);
extern Vec subVec(Vec, Vec);
extern Vec mulVec(Vec, Vec);
extern Vec divVec(Vec, Vec);
extern Vec sclVec(double, Vec);
extern Vec nrmVec(Vec);
extern double dotVec(Vec, Vec);
extern Vec crsVec(Vec, Vec);
extern Vec lrpVec(Vec, Vec, double);
extern Vec absVec(Vec);
extern Vec latlonrhoToCartesianVec(Vec);
extern Vec CartesianTolatlonrhoVec(Vec);
extern Vec sphericalToCartesianVec(Vec);
extern Vec CartesianTosphericalVec(Vec);
extern Vec sphericalTolatlonrhoVec(Vec);
extern Vec latlonrhoTosphericalVec(Vec);
extern Vec cylindricalToCartesianVec(Vec);
extern Vec CartesianTocylindricalVec(Vec);
extern Vec mixThreeVec(Vec, Vec, Vec, Vec);
extern Vec  avgFourVec(Vec, Vec, Vec, Vec);
extern Vec threePntsToPlaneEqn(Vec, Vec, Vec);
extern Vec HSVToRGB(Vec);
extern Vec    fscanVec(FILE* f);
extern void  fprintVec(FILE* f, Vec inst);
extern Vec    freadVec(FILE* f);
extern void  fwriteVec(FILE* f, Vec inst);
extern void  sprintVec(char *cbuf, Vec a);
