代码之家  ›  专栏  ›  技术社区  ›  Engine

实现scott T方法

c
  •  0
  • Engine  · 技术社区  · 11 年前

    我尝试使用以下代码实现一个数学形式,将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 回复  |  直到 11 年前
        1
  •  1
  •   WhatRoughBeast    11 年前

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

        2
  •  0
  •   Jasen    7 年前

    在这里,它是固定的,我必须改变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);
    }