# ifndef __HOHVECT_H__ # define __HOHVECT_H__ typedef double vector9[9]; typedef vector9 Vector9; typedef vector9 Vector; typedef vector9 Matrix; /* ** ARTVECT VECTORS 6145 1.00000 DCDIO_3 DOTS 99999 1.00000 ** */ # define DEFAULT_VECTOR_HEADER "DEFAULT VECTORS 9999 1.00000\n" # define FMT_VECTHDR "%-7s %-8s%5d%15.5f\n" # define DOTS_TYPE 1 # define RD(x) {\ char buf[BUFSIZ];\ scanf("%s",buf) ;\ x = (double) atof(buf) ;\ printf("%s [%d]: %s = %f\n",__FILE__,__LINE__,MAKESTRING(x),x);\ } # define RDS(x) {\ char buf[BUFSIZ];\ scanf("%s",buf) ;\ x = (double) atof(buf) ;\ printf("%s [%d]: %s = %f\n",__FILE__,__LINE__,MAKESTRING(x),x);\ } # define DOT(U,V) (U[0]*V[0] + U[1]*V[1] + U[2]*V[2]) /* U = ai + bj + ck V = Ai + Bj + Ck U x V = (bC - cB) i + (cA - aC) j + (aB - bA) k */ # define CROSS(W,u,V) \ {\ W[0]=u[1]*V[2] - u[2]*V[1];\ W[1]=u[2]*V[0] - u[0]*V[2];\ W[2]=u[0]*V[1] - u[1]*V[0];\ } # define SCALAR_MULT(V,a,U) \ {\ V[0]=a*U[0];\ V[1]=a*U[1];\ V[2]=a*U[2];\ } # define VECT_SUM(W,U,V) \ {\ W[0]=U[0]+V[0];\ W[1]=U[1]+V[1];\ W[2]=U[2]+V[2];\ } # define VECT_DIFF(W,U,V) \ {\ W[0]=U[0]-V[0];\ W[1]=U[1]-V[1];\ W[2]=U[2]-V[2];\ } /* ----------- */ # define WRT_VECTHDR(s,name,num,type)\ /* ----------- */\ {\ if (type == DOTS_TYPE)\ fprintf(s,FMT_VECTHDR,name,"DOTS ",num,1.0);\ else \ fprintf(s,FMT_VECTHDR,name,"VECTORS",num,1.0);\ } # define WRT1VECT(s,v,i)\ {fprintf(s,"%10.5f%10.5f%10.5f%5d\n",v[0],v[1],v[2],i);} # define ATOV3(s,v) {v[0]=v[1]=v[2]=0; sscanf(s,"%lf %lf %lf",v,v+1,v+2);} # define VECT3CPY(v1,v2) { \ (v2)[0]=(v1)[0]; \ (v2)[1]=(v1)[1]; \ (v2)[2]=(v1)[2]; \ } # define SUBTRACT(w,u,v) {w[0]=u[0]-v[0]; w[1]=u[1]-v[1]; w[2]=u[2]-v[2];} # define TOVECT(v,x,y,z) {v[0]=x; v[1]=y; v[2]=z;} # define LENVECT(v) (sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2])) # define MKMAT(rc11,rc12,rc13, rc21,rc22,rc23, rc31,rc32,rc33, R) { \ RC(R,1,1)= rc11; \ RC(R,1,2)= rc12; \ RC(R,1,3)= rc13; \ RC(R,2,1)= rc21; \ RC(R,2,2)= rc22; \ RC(R,2,3)= rc23; \ RC(R,3,1)= rc31; \ RC(R,3,2)= rc32; \ RC(R,3,3)= rc33; \ } # endif /* !__HOHVECT_H__ */