#include #include #include #include main(int argc,char *argv[255]) { FILE *inF,*outF; float p1,P,p2,wt=1.0,PI; char datStr[255],inName[255],outName[255]; long n,nGood=0; PI = 3.141592654; if (argc!=2) { printf("usage: oim2wts filename (without .ang extension)\n"); exit(0); } sprintf(inName,"%s.ang",argv[1]); sprintf(outName,"%s.wts",argv[1]); inF = fopen(inName,"r"); if (!inF) {printf("Can't open file %s\n",inName); exit(0);} outF = fopen(outName,"w"); if (!outF) {printf("Can't open file %s\n",inName); exit(0);} fprintf(outF,"%s file from OIM data 29-Jul-92 no wts.<1.0\n",outName); fprintf(outF," Evm F11 F12 F13 F21 F22 F23 F31 F32 F33\n"); fprintf(outF," 0.000 1.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 1.000\n"); fprintf(outF,"Kocks:Psi Theta phi weight"); fprintf(outF," (up to 6 state parameters, f8.2) XYZ= 1 2 3\n"); for (n=0;;++n) { if (!fgets(datStr,255,inF)) break; if (datStr[0]=='#') {continue; --n;} if (sscanf(datStr,"%f %f %f",&p1,&P,&p2)<3) break; if (p1>9.0) continue; ++nGood; p1 *= (180.0/PI); p2 *= (180.0/PI); P *= (180.0/PI); p1 = p1 - 90.0; if (p1<0.0) p1 += 360.0; p2 = 90.0 - p2; if (p2<0.0) p2 += 360.0; fprintf(outF,"%8.2f%8.2f%8.2f%8.2f\n",p1,P,p2,wt); } fclose(inF); fclose(outF); printf("%li orientations in %s\n",n,inName); printf("%li orientations in %s\n",nGood,outName); }