Пример #1
0
t_k	*luminosite(t_spot *spot, t_k *k, t_objet *obj, t_utils *utils)
{
  t_utils	L;
  t_objet	obj3;
  double	tmp;
  double	a;

  a = 0.0;
  init_new_color(k);
  trans_inv(utils, obj, 0);
  obj_rot(utils, obj, -1, 1);
  calc_coord(k, &obj3, utils);
  utils = my_init_norm(obj, obj3, utils);
  while (spot != NULL)
    {
      init_distance(spot, &L, obj3);
      tmp = calc_cos(utils, L);
      if (obj->texture == 1 || obj->texture == 2)
	k = texture(obj3, k, obj->texture);
      get_new_color(k, (tmp < 0.0 ? tmp = 0.0 : tmp), obj, spot);
      spot = spot->next;
      a++;
    }
  obj_rot(utils, obj, 1, 1);
  trans_nor(utils, obj, 0);
  check_color(k, a, utils);
  return (k);
}
Пример #2
0
t_k		*luminosite(t_spot *spot, t_k *k, t_objet *obj, t_utils *utils)
{
	double	a;
	double	tmp;
	t_utils	l;
	t_objet	obj3;

	a = 0.0;
	init_new_color(k);
	trans_inv(utils, obj, 0);
	obj_rot(utils, obj, -1, 1);
	calc_coord(k, &obj3, utils);
	utils = init_norm(obj, obj3, utils);
	while (spot != NULL)
	{
		init_distance(spot, &l, obj3);
		tmp = calc_cos(utils, l);
		get_new_color(k, (tmp < 0.0 ? tmp = 0.0 : tmp), obj, spot);
		spot = spot->next;
		a++;
	}
	obj_rot(utils, obj, 1, 1);
	trans_nor(utils, obj, 0);
	check_color(k, a, utils);
	return (k);
}
Пример #3
0
void init_table(){
  table = malloc(sizeof *table * 3);
  table[0] = malloc(ROOTDIM * sizeof(double));
  table[1] = malloc(ROOTDIM * sizeof(double));
  table[2] = malloc(ROOTDIM * sizeof(double));
  for (int i = 0; i < CPLXDIM; ++i)
  {
    table[0][i] = calc_cos(ROOTDIM,i);
    table[1][i] = calc_sin(ROOTDIM,i);
    table[2][i] = -table[1][i];
  }
}
Пример #4
0
/* main */
int main (int argc, char** argv)   
{
    unsigned int calc_mod = 0;
    double idata  = 0;
    double kdata  = 0;
    double result = 0;
    
    if(argc < 2 || argc > 4)
    {
        printf("enter cmd numbers must greater than 2 and less than 5!!!\n\n");
	    printf("命令格式如下所示:\n");
    	printf("./calc_sim 1 xxx xxx      add\n");
    	printf("./calc_sim 2 xxx xxx      sub\n");
    	printf("./calc_sim 3 xxx xxx      multi\n");
    	printf("./calc_sim 4 xxx xxx      div\n");
    	printf("./calc_sim 5              PI\n");
    	printf("./calc_sim 6 xxx          sin\n");
    	printf("./calc_sim 7 xxx          cos\n");
    	printf("./calc_sim 8 xxx          tan\n");
    	printf("./calc_sim 9 xxx          fabs\n");
    	printf("./calc_sim 10 xxx         exp\n");
    	printf("./calc_sim 11 xxx         log\n");
    	printf("./calc_sim 12 xxx         log10\n");
   	    printf("./calc_sim 13 xxx xxx     pow\n");
    	printf("./calc_sim 14             rand\n");

    	return -1;
    }

    argv++;
    calc_mod=atoi(*argv);

    if(calc_mod < 1 || calc_mod > 14){
	     printf("命令格式如下所示:\n");
    	     printf("./calc_sim 1 xxx xxx      add\n");
    	     printf("./calc_sim 2 xxx xxx      sub\n");
    	     printf("./calc_sim 3 xxx xxx      multi\n");
    	     printf("./calc_sim 4 xxx xxx      div\n");
    	     printf("./calc_sim 5              PI\n");
    	     printf("./calc_sim 6 xxx          sin\n");
    	     printf("./calc_sim 7 xxx          cos\n");
    	     printf("./calc_sim 8 xxx          tan\n");
    	     printf("./calc_sim 9 xxx          fabs\n");
    	     printf("./calc_sim 10 xxx         exp\n");
    	     printf("./calc_sim 11 xxx         log\n");
    	     printf("./calc_sim 12 xxx         log10\n");
   	     printf("./calc_sim 13 xxx xxx     pow\n");
    	     printf("./calc_sim 14             rand\n");
	return -1;
	
        }

    
    if(argc==2){
	
	    printf("Enter is mod<%d>  \n", calc_mod);
    
        switch(calc_mod){
            case 5:
                result = calc_PI();
                printf("calc PI result is %f\n",result);
                break;
	        case 14:
                result = calc_rand();
                printf("calc rand result is %f\n",result);
                break;
            default:
                if(calc_mod==1)
                    printf("add 格式:./calc_sim 1 xxx xxx\n");
                if(calc_mod==2)
                    printf("sub 格式:./calc_sim 2 xxx xxx\n");
                if(calc_mod==3)
                    printf("multi 格式:./calc_sim 3 xxx xxx\n");
                if(calc_mod==4)
                    printf("div 格式:./calc_sim 4 xxx xxx\n");
                if(calc_mod==5)
                    printf("PI 格式:./calc_sim 5\n");
                if(calc_mod==6)
                    printf("sin 格式:./calc_sim 6 xxx\n");
                if(calc_mod==7)
                    printf("cos 格式:./calc_sim 7 xxx\n");
                if(calc_mod==8)
                    printf("tan 格式:./calc_sim 8 xxx\n");
                if(calc_mod==9)
                    printf("fabs 格式:./calc_sim 9 xxx\n");
                if(calc_mod==10)
                    printf("exp 格式:./calc_sim 10 xxx\n");
                if(calc_mod==11)
                    printf("log 格式:./calc_sim 11 xxx\n");
                if(calc_mod==12)
                    printf("log10 格式:./calc_sim 12 xxx\n");
                if(calc_mod==13)
                    printf("pow 格式:./calc_sim 13 xxx xxx\n");
                if(calc_mod==14)
                    printf("rand 格式:./calc_sim 14\n");
                
                break;
	
        }   
    }

    if(argc==3){

        argv ++;
        idata = atof(*argv);

	    printf("Enter is mod<%d> data_f<%f> \n", calc_mod, idata);

	    switch(calc_mod){
	        case 6:
                result = calc_sin(idata);
                printf("calc sin (%f) result is %f\n",idata,result);
                break;

            case 7:
                result = calc_cos(idata);
                printf("calc cos (%f) result is %f\n",idata,result);
                break;

            case 8:
                result = calc_tan(idata);
                printf("calc tan (%f) result is %f\n",idata,result);
                break;

            case 9:
                result = calc_fabs(idata);
                printf("calc fabs (%f) result is %f\n",idata,result);
                break;

            case 10:
                result = calc_exp(idata);
                printf("calc exp (%f) result is %f\n",idata,result);
                break;

            case 11:
                if(idata<=0){
                printf("真数必须大于0\n");
                break;
                }
                result = calc_log(idata);
                printf("calc log (%f) result is %f\n",idata,result);
	            break;

            case 12:
                if(idata<=0){
                printf("真数必须大于0\n");
                break;
                }
                result = calc_log10(idata);
                printf("calc log10 (%f) result is %f\n",idata,result);
                break;
            default:
		if(calc_mod==1)
                    printf("add 格式:./calc_sim 1 xxx xxx\n");
                if(calc_mod==2)
                    printf("sub 格式:./calc_sim 2 xxx xxx\n");
                if(calc_mod==3)
                    printf("multi 格式:./calc_sim 3 xxx xxx\n");
                if(calc_mod==4)
                    printf("div 格式:./calc_sim 4 xxx xxx\n");
                if(calc_mod==5)
                    printf("PI 格式:./calc_sim 5\n");
                if(calc_mod==6)
                    printf("sin 格式:./calc_sim 6 xxx\n");
                if(calc_mod==7)
                    printf("cos 格式:./calc_sim 7 xxx\n");
                if(calc_mod==8)
                    printf("tan 格式:./calc_sim 8 xxx\n");
                if(calc_mod==9)
                    printf("fabs 格式:./calc_sim 9 xxx\n");
                if(calc_mod==10)
                    printf("exp 格式:./calc_sim 10 xxx\n");
                if(calc_mod==11)
                    printf("log 格式:./calc_sim 11 xxx\n");
                if(calc_mod==12)
                    printf("log10 格式:./calc_sim 12 xxx\n");
                if(calc_mod==13)
                    printf("pow 格式:./calc_sim 13 xxx xxx\n");
                if(calc_mod==14)
                    printf("rand 格式:./calc_sim 14\n");
                
                break;
        }
	}

    if(argc==4){

        argv ++;
        idata = atof(*argv);
        argv ++;    
        kdata = atof(*argv);    
    
        printf("Enter is mod<%d> data_f<%f> data_b<%f> \n", calc_mod, idata, kdata);
    
        switch(calc_mod)
        {
    	    case 1:
    	        result = calc_add(idata, kdata);   
                printf("Calc add (%f + %f) result is %f\n", idata, kdata, result);  	    	
    	        break;
    	    	
    	    case 2:
    	        result = calc_sub(idata, kdata);
                printf("Calc sub (%f - %f) result is %f\n", idata, kdata, result);     	    	    
    	        break;
    	    
	        case 3:
	            result = calc_multi(idata,kdata);
	            printf("calc multi(%f * %f) result is %f\n",idata,kdata,result);
	            break;
		
	        case 4:
                if(kdata==0){
                    printf("除数不能为0\n");
                    break;}
                else
	            result = calc_div(idata,kdata);
	            printf("calc div(%f / %f) result is %f\n",idata,kdata,result);             
	            break;

            case 13:
                result = calc_pow(idata,kdata);
                printf("calc pow (%f , %f) result is %f\n",idata,kdata,result);
                break;

            default:
		if(calc_mod==1)
                    printf("add 格式:./calc_sim 1 xxx xxx\n");
                if(calc_mod==2)
                    printf("sub 格式:./calc_sim 2 xxx xxx\n");
                if(calc_mod==3)
                    printf("multi 格式:./calc_sim 3 xxx xxx\n");
                if(calc_mod==4)
                    printf("div 格式:./calc_sim 4 xxx xxx\n");
                if(calc_mod==5)
                    printf("PI 格式:./calc_sim 5\n");
                if(calc_mod==6)
                    printf("sin 格式:./calc_sim 6 xxx\n");
                if(calc_mod==7)
                    printf("cos 格式:./calc_sim 7 xxx\n");
                if(calc_mod==8)
                    printf("tan 格式:./calc_sim 8 xxx\n");
                if(calc_mod==9)
                    printf("fabs 格式:./calc_sim 9 xxx\n");
                if(calc_mod==10)
                    printf("exp 格式:./calc_sim 10 xxx\n");
                if(calc_mod==11)
                    printf("log 格式:./calc_sim 11 xxx\n");
                if(calc_mod==12)
                    printf("log10 格式:./calc_sim 12 xxx\n");
                if(calc_mod==13)
                    printf("pow 格式:./calc_sim 13 xxx xxx\n");
                if(calc_mod==14)
                    printf("rand 格式:./calc_sim 14\n");
    	     
    	        break;
        }
    }
    
    return 0;
}
Пример #5
0
int main(int argc,char **argv){
	
	unsigned int calc_mod = 0;
	double idata  = 0;
        double kdata  = 0;
        double result = 0;
	
	

	if(argc <2){
	
	 printf("enter cmd numbers must >= 2!!\n");
	 return -1;
}
       
       if(2 == argc){
  		argv++;	
		calc_mod = atoi(*argv);

	switch(calc_mod){
		case 5:
			printf("Calc PI is %f\n",calc_pi());
			break;

		case 14:
			result = calc_rand();
			printf("Calc rand result is %f\n", result);
			break;
		default:
			printf("Input abnormally\n");
			break;
}
}
	if(3 == argc){
		argv++;	
		calc_mod = atoi(*argv);
		argv++;    
            	idata = atof(*argv);
	switch(calc_mod){
		case 6:
			result = calc_sin((double) idata);
			printf("Calc sin (%f) result is %f\n",idata,result);			
				break;
		case 7: 
			result= calc_cos((double) idata);
			printf("Calc cos (%f) result is %f\n",idata,result);
				break;
		case 8:
			if(PI/2 == idata ||-PI/2 == idata){
				printf("Input abnormally\n");
				break; 			
			}
			result = calc_tan((double) idata);
			printf("Calc tan (%f) result is %f\n",idata,result);				
				break;
		case 9:
			result = calc_fabs((double) idata);
			printf("Calc tan (%f) result is %f\n",idata,result);
				break;
		case 10:
			result = calc_exp((double) idata);
			printf("Calc exp (%f) result is %f\n",idata,result);
				break;
		case 11:
			if(idata <= 0){
				printf("Input abnormally\n");
				break;
			}
			result = calc_ln((double) idata);
			printf("Calc ln (%f) result is %f\n",idata,result);
				break;
		case 12:
			if(idata <= 0){
				printf("Input abnormally\n");
				break;
			}
			result = calc_log10((double) idata);
			printf("Calc log10 (%f) result is %f\n",idata,result);
				break;	
		default:
			printf("Input abnormally\n");
				break;
}
}

	if(4 == argc){
		argv++;	
		calc_mod = atoi(*argv);
		argv++;    
            	idata = atof(*argv);
		argv++;
  		kdata = atof(*argv); 
	switch(calc_mod){
		case 1:
			result = calc_add(idata, kdata);   
	                printf("Calc add (%f + %f) result is %f\n", idata, kdata, result); 
			break;
		case 2:
  			result = calc_sub(idata, kdata);
 	                printf("Calc sub (%f - %f) result is %f\n", idata, kdata, result);     	    	    
    	 			break;
		case 3: 
			result = calc_mul(idata,kdata);
			printf("Calc mul (%f * %f) result is %f\n", idata, kdata, result);
				break;
		case 4:
			if(0 == kdata){
				printf("Input abnormaly\n");
				break;
			}	
			result = calc_div(idata,kdata);
			printf("Calc div (%f / %f) result is %f\n", idata, kdata, result);
		case 13:
			result = calc_pow(idata,kdata);
			printf("Calc pow (%f / %f) result is %f\n", idata, kdata, result);
				break;
		default:
			printf("Input abnormally\n");
				break;
} 
}
  
return 0;

}