Chr*_*itt 1 c math trigonometry
我在C中编写一个函数,它以给定的长度和宽度返回给定角度的椭圆半径; 基本上用C编写这个计算:
不幸的是,该平台不支持,math.h但我可以使用内置sin和cos功能.
如何在C中编写此计算并将其存储在int?
我试过了:
int theta = 90;
int a = 164;
int b = 144;
float aa = (((a^2) * ((sin_lookup(DEG_TO_TRIGANGLE(theta)))^2)) +
((b^2) * ((cos_lookup(DEG_TO_TRIGANGLE(theta)))^2))) /
(TRIG_MAX_ANGLE^2);
float result = (a * b) / (my_sqrt(aa));
int value = (int)result;
Run Code Online (Sandbox Code Playgroud)
很容易
int getRadius(double a, double b, double theta)
{
double s = sin(theta),
c = cos(theta);
return (a * b) / sqrt((a*a)*(s*s)+(b*b)*(c*c))
}
Run Code Online (Sandbox Code Playgroud)
虽然我不确定你为什么要回归int.你会失去很多精确度.
该^运营商不这样做的权力的方式.这实际上是一个按位异或.这是新(C)程序员犯的常见错误.math.h有pow()计算能力的功能,但你说你不能使用math.h.这些值仅提升到二次幂,因此手动乘法非常容易.