我尝试使用以下代码实现数学形式将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;
}
以下是我试图实施的内容:
我永远不会得到我回馈的角度。
知道我在这里做错了什么吗?
答案 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);
}