gpt4 book ai didi

c - 如何计算 x=0 线与从 (0, 0) 到点 (j, i) 的线之间的度数?

转载 作者:行者123 更新时间:2023-11-30 17:43:08 25 4
gpt4 key购买 nike

我必须返回以度为单位的角度,它应该在 0 到 360(含)之间的范围内。我必须使用 math.h 库中的函数 acos()、asin() 和 atan()。在我的说明中,它说根据该点所在的象限,计算可能会有所不同。

注意:稍后我将使用这个函数来绘制图像,所以我认为他们说点(j,i)的原因是因为它们分别指的是行数和列数。但我对他们如何绘制这些点有点困惑。这是在数学中在坐标平面上绘制的方式吗? (j 是 x 坐标,i 是 y 坐标)

我尝试了一个解决方案,但我对根据象限不同,计算会有所不同的想法感到有点困惑。我在想,如果我找到从原点到点 (j, i) 的距离,并且如果我只使用相邻的边(即 j 坐标),我可以对所有四个象限使用 acos() 。 (如果j相当于绘制点时的x坐标)

float getAngle(int i, int j) {
float distance, result, radians, degrees;

distance = sqrt((j * j) + (i * i));

if (j > 0 && i > 0) {
result = cos(distance/j) * (1.0);
radians = acos(result);
degrees = radians * (180/3.14);
}
}

提前感谢所有提出建议的人!我真的很感激!

最佳答案

#include <stdio.h>
#include <math.h>

#define PI 3.14159265358979323

#if 0
double getAngle(int x, int y) {
//angle(degree) from (0, 0) to (x, y) by acos
double distance, cos_v, radians, degrees;

distance = sqrt((x * x) + (y * y));
cos_v = x / distance;
radians = acos(cos_v);
if(y<0)
radians=2.0*PI-radians;
degrees = radians * (180.0/PI);
}
#else
double getAngle(int x, int y) {
//angle(degree) from (0, 0) to (x, y) by atan2
//(x ==0 && y==0) is error
double radians, degrees;

radians = atan2(y, x);
if(radians<0)
radians += 2.0*PI;
degrees = radians * (180.0/PI);
}
#endif

int main(void){
int data[][2] = {
//(x, y)
{ 1, 0}, { 1, 1}, {0, 1}, {-1, 1},
{-1, 0}, {-1, -1}, {0, -1}, { 1, -1}
};
int i;
for(i=0;i<8;++i)
printf("%g\n", getAngle(data[i][0], data[i][1]));
return 0;
}

关于c - 如何计算 x=0 线与从 (0, 0) 到点 (j, i) 的线之间的度数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20297737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com