www.pudn.com > work.rar > CARLIGHT.CPP
#include#include #define step 1 void f(float x,float y,float z,float b,float *new_x,float *new_y) {float t1,t2,m1,m2,n1,n2,p1,p2,m,n,p,t; t1=sqrt(x*x+(b-y)*(b-y)+(15-z)*(15-z)); t2=sqrt(4*x*x+4*y*y+3600); t=t1*t2; m1=-4*x*x/t; n1=4*y*(b-y)/t; p1=120*(z-15)/t; t=sqrt(x*x+(b-y)*(b-y)+(15-z)*(15-z)); m2=-x/t; n2=(b-y)/t; p2=(15-z)/t; m=m1-m2; n=n1-n2;p=p1-p2; *new_x=x+m*(25000-z)/p; *new_y=y+n*(25000-z)/p; } int main() {float k1=21.6,k2,l=3.12; float x,y,z,b,new_x=0,new_y=0,nx=1,ny=1; FILE *fout=NULL; clrscr(); if((fout=fopen("c:\\grid.txt","wt"))==NULL)return -1; printf("please wait...\n"); for(z=k1;z>=0;z=z-step) {k2=sqrt(60*z); for(x=-k2;x<=k2;x=x+step) {if(x!=0)y=sqrt(fabs(60*z-x*x)); else y=0; for(b=-l/2;b<=l/2;b=b+step) {f(x,y,z,b,&new_x,&new_y); fprintf(fout,"%f %f\n",new_x,new_y); } if(x!=0)y=-sqrt(fabs(60*z-x*x));else y=0; for(b=-l/2;b<=l/2;b=b+step) {f(x,y,z,b,&new_x,&new_y); fprintf(fout,"%f %f\n",new_x,new_y); } } } fclose(fout);printf("finished!");getch();return 0; }