具有给定长度和宽度的给定角度的椭圆半径

Chr*_*itt 1 c math trigonometry

我在C中编写一个函数,它以给定的长度和宽度返回给定角度的椭圆半径; 基本上用C编写这个计算:

在此输入图像描述

不幸的是,该平台不支持,math.h但我可以使用内置sincos功能.

如何在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)

PC *_*ite 7

很容易

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.hpow()计算能力的功能,但你说你不能使用math.h.这些值仅提升到二次幂,因此手动乘法非常容易.