我在C中编写一个函数,它以给定的长度和宽度返回给定角度的椭圆半径;基本上用C:
编写这个计算不幸的是,该平台不支持sin
,但我可以使用内置cos
和int
个功能。
如何在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))
答案 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
。这些值仅提升到二次幂,因此手动乘法非常容易。