C 给定长度和宽度、给定角度的椭圆半径
我正在用C写一个函数,它返回一个椭圆的半径,这个椭圆以给定的角度,具有给定的长度和宽度;基本上用C写下这个计算: 不幸的是,该平台不支持C 给定长度和宽度、给定角度的椭圆半径,c,math,trigonometry,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) *
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;
很容易
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
。这些值只升到二次方,因此手动相乘非常容易。非常简单
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
。这些值只升到二次方,因此手动相乘非常容易。它有sqrt
?…问题是?你尝试过什么吗?如果是这样,请发布。C语言中的^
并没有达到您的预期。对于平方根,您可以显示您在my_sqrt
函数中尝试了什么,它是否有sqrt
?…问题是?您尝试过什么吗?如果是这样,请发布。C语言中的^
并没有达到您的预期。对于平方根,您可以显示在my_sqrt
函数中尝试的内容,而不是创建两个双值,我将使用宏或创建自己的pow()函数。只是建议,否则我认为你的答案是完美的。@GRC如果pow
还没有定义,那可能是一个很好的方法,但是万一他们的数学库定义了pow
,我就避免了它。可能想要返回为double
--int
真的不是那么令人兴奋(更不用说整数数学和所有…)@DavidC.Rankin这个问题特别要求int
,否则我完全同意。int
不会告诉你太多。我明白了,只是看起来太反直觉了。我会用宏或自己的pow()来代替创建两个双值函数。只是建议,否则我认为你的答案是完美的。@GRC如果pow
还没有定义,那可能是一个很好的方法,但是万一他们的数学库定义了pow
,我就避免了它。可能想要返回为double
--int
真的不是那么令人兴奋吗(更不用说整数数学和所有…)@DavidC.Rankin这个问题特别要求int
,否则我完全同意。int
不会告诉你很多。我明白了,只是看起来很反直觉。