实现scott T方法

时间:2015-03-18 15:55:45

标签: c

我尝试使用以下代码实现数学形式将3阶段系统转换为2阶段:

#include <stdio.h>
#include <math.h>

#define PI 3.14159265358979


void getAngle( float  xValue , float  yValue, float zValue){
     float x = 0.0;
     float y = 0.0;
     float z = 0.0;
     double rad_angle =0.0;
     double  angle =0 ;
     double zaehler = 0.0;
     double nenner = 0.0;
     z=xValue;
     y=yValue;
     x=zValue;

     printf(" Getangle \n" );
     printf(" X = %lf , [BY = %lf , Z = %lf \n " , x,y,z);
     zaehler =z-x;
     nenner  = ((y-x) -((x-z)/2-(z-y)/2))*(2*sqrt(3));
     printf (" the sin value is  :  %lf  \n" , zaehler);
     printf ("  the cos value is  : %lf \n",nenner);
     rad_angle = atan2(nenner,zaehler);
     printf("Radangle = %lf \n",rad_angle);
     angle =( rad_angle  * 180/PI);
     printf("Angle in degree   = %lf \n",angle);
}

void setAngle(float angle ){
   float x = 0 ;
   float y = 0 ;
   float z = 0 ;
   printf(" the given angle is : %lf \n",angle);
   angle = angle *PI/180;
   x = sin(angle);
   y = sin(angle+(120* (PI/180.0)));
   z = sin(angle+(240* (PI/180.0)));
   printf(" Set  angle \n" );
   printf(" the x value  : %f ,\n the y value : %f ,\n the z value :%f ",x,y,z);
   getAngle(x,y,z);
}

int main (){
    float angle = 0;
    while (1){
        printf(" angle in Degrees \n");
        scanf("%f" ,&angle);
        printf("  sinus angle : %f", sin(angle*PI/180));
        setAngle(angle);
    }
    return 0;
}

以下是我试图实施的内容:

equation

我永远不会得到我回馈的角度。

知道我在这里做错了什么吗?

2 个答案:

答案 0 :(得分:1)

nenner =(y - ((x + z)/ 2))*(2 / sqrt(3));

答案 1 :(得分:0)

它已经固定好了,我不得不改变x,y,z的顺序并确定nenner公式。

void getAngle( float  xValue , float  yValue, float zValue){
     float x = 0.0;
     float y = 0.0;
     float z = 0.0;
     float rad_angle =0.0;
     float  angle =0 ;
     float zaehler = 0.0;
     float nenner = 0.0;
     y=xValue;
     z=yValue;
     x=zValue;

     printf(" Getangle \n" );
     printf(" X = %lf , [BY = %lf , Z = %lf \n " , x,y,z);
     zaehler =z-x;
     nenner  = (y -((x+z)/2))*(2/sqrt(3)); 
     printf (" the sin value is  :  %lf  \n" , zaehler);
     printf ("  the cos value is  : %lf \n",nenner);
     rad_angle = atan2(nenner,zaehler);
     printf("Radangle = %lf \n",rad_angle);
     angle =( rad_angle  * 180/PI);
     printf("Angle in degree   = %lf \n",angle);
}