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

时间:2015-10-10 03:40:12

标签: c math trigonometry

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

编写这个计算

enter image description here

不幸的是,该平台不支持sin,但我可以使用内置cosint个功能。

如何在C中编写此计算并将其存储在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;

我试过了:

numList = [1,2,3,4,5]
t = lambda x: [0 for x in numList]
print (t(numList))

1 个答案:

答案 0 :(得分: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))
}

虽然我不确定你为什么要退回int。你会失去很多精确度。

^运算符不是执行权限的方式。这实际上是一个按位异或。这是新(C)程序员犯的常见错误。 math.h具有用于计算权力的函数pow(),但您说您无法使用math.h。这些值仅提升到二次幂,因此手动乘法非常容易。