Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /***************************************************************************
- simulation data
- DSM floatデータ型で格納
- read
- 2008/1/10
- made by Yoshiyukiu Yamamoto
- ver1.1 2009/3/7
- ********************************************************************************/
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<math.h>
- float RandomFloat(float a, float b);
- int main(int argc,char *argv[])
- {
- /*****************************************************
- 1.Definition of Variables
- ******************************************************/
- FILE *fpw; //file pointer for input&output file
- int no,i,j;
- float x,y,z,lh;
- float d;
- unsigned char r,g,b;
- double zy,azy,azr,zr;
- int max;
- float rand_min,rand_max;
- float b_rad;
- /*****************************************************
- 2.command Line arguments processing
- ******************************************************/
- if(argc!=8)
- {
- fprintf(stderr,"Usage: %s (1)output_xyz FILENAME¥n(2)emit angle¥n(3)Inst height¥n(4)max¥n(5)rand_min¥n(6)rand_max¥n(7)b_radius¥n",argv[0]);
- exit(1);
- }
- printf("OPEN FILE NAME:%s\n",argv[1]);
- printf("emit angle:%s\n",argv[2]);
- printf("Inst height:%s\n",argv[3]);
- printf("max:%s\n",argv[4]);
- printf("rand_min:%s\n",argv[5]);
- printf("rand_max:%s\n",argv[6]);
- printf("boundary_radius:%s\n",argv[7]);
- /**********************************************************************************
- **********************************************************************************
- 4. FILE OPEN + Binary File Input
- **********************************************************************************
- ***************************************************************************************/
- // open input file
- /* if((fpr=fopen(argv[1],"r"))==NULL)
- {
- printf("ファイルのオープンに失敗しました。プログラムを終了します。¥n");
- exit(1);
- }
- */
- //write file
- if((fpw=fopen(argv[1],"w"))==NULL)
- {
- fprintf(stderr,"DSM by GSI データファイル.raw¥n");
- exit(1);
- }
- azr=0;
- azy=0;
- zr=atof(argv[2]);//0.0006 angle
- zy=atof(argv[2]);
- lh=atof(argv[3]);//1.5
- max=atoi(argv[4]);//2000
- rand_min=atof(argv[5]);//-0.003
- rand_max=atof(argv[6]);//+0.003
- b_rad=atof(argv[7]);//2m
- /*******************************************************
- データの読み取り書き込み
- *******************************************************/
- /* データ処理 */
- for(i=0;i<10473;i++)
- {
- for(j=0;j<max;j++)
- {
- azr=zr*j;
- azy=zy*i;
- x=cos(azy)*lh*tan(azr);
- y=sin(azy)*lh*tan(azr);
- //random
- z=RandomFloat(rand_min,rand_max);
- r=127;
- g=127;
- b=127;
- //printf("x=%f,y=%f,z=%f,r=%d,g=%d,b=%d¥n",x,y,z,r,g,b);
- d=(float)pow((pow((double)x,2)+pow((double)y,2)),0.5);
- if(d>0.866 && d<b_rad)
- {
- fprintf(fpw,"%f %f %f %d %d %d\n",x,y,z,r,g,b);
- }
- }
- }
- /* ファイル・クローズ*/
- //fclose(fpr);
- fclose(fpw);
- }
- float RandomFloat(float a, float b)
- {
- float random = ((float) rand()) / (float) RAND_MAX;
- float diff = b - a;
- float r = random * diff;
- return a + r;
- }
Advertisement
Add Comment
Please, Sign In to add comment