Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 给定长度和宽度、给定角度的椭圆半径_C_Math_Trigonometry - Fatal编程技术网

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) *

我正在用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;
很容易

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
不会告诉你很多。我明白了,只是看起来很反直觉。