gpt4 book ai didi

c++ - 如何将度数(角度)转换为面数

转载 作者:行者123 更新时间:2023-11-30 04:29:56 31 4
gpt4 key购买 nike

我有一个包含 40 个旋转图像的图像。

图像索引实际上从 0. 0-39 开始。

这是将 0-39 转换为度数的代码

int image_direction = 0; //Can be 0-39
int facing_degrees = (int)(360.0 * (-(image_direction- 10.0))/40.0);
while(facing_degrees < 0)
facing_degrees += 360;
while (facing_degrees > 360)
facing_degrees -= 360;

是的,它还可以给出负度数以及超过 360 度的度数。这就是为什么有 2 个 while 循环的原因。

现在我想反转这个过程,比如我指定了 90 度,我想返回 0..

我正在考虑做类似的事情

 if(degrees == 90 || degrees >= 80 && degrees <= 99)
image_direction = 0;
elseif(degrees == 100 || degrees >= 91 && degrees <= 109)
image_direction = 39;
//etc.......

好吧,我数学不好,好吧,我忘记了这种东西。

我想知道如何反转从 image_direction 给出度数的函数以在普通方程中向后运行以避免 if 语句的大写情况。

这是一些结果 rotation results

Image Index = 0 Image Degree = 90
Image Index = 1 Image Degree = 81
Image Index = 2 Image Degree = 72
Image Index = 3 Image Degree = 63
Image Index = 4 Image Degree = 54
Image Index = 5 Image Degree = 45
Image Index = 6 Image Degree = 36
Image Index = 7 Image Degree = 27
Image Index = 8 Image Degree = 18
Image Index = 9 Image Degree = 9
Image Index = 10 Image Degree = 0
Image Index = 11 Image Degree = 351
Image Index = 12 Image Degree = 342
Image Index = 13 Image Degree = 333
Image Index = 14 Image Degree = 324
Image Index = 15 Image Degree = 315
Image Index = 16 Image Degree = 306
Image Index = 17 Image Degree = 297
Image Index = 18 Image Degree = 288
Image Index = 19 Image Degree = 279
Image Index = 20 Image Degree = 270
Image Index = 21 Image Degree = 261
Image Index = 22 Image Degree = 252
Image Index = 23 Image Degree = 243
Image Index = 24 Image Degree = 234
Image Index = 25 Image Degree = 225
Image Index = 26 Image Degree = 216
Image Index = 27 Image Degree = 207
Image Index = 28 Image Degree = 198
Image Index = 29 Image Degree = 189
Image Index = 30 Image Degree = 180
Image Index = 31 Image Degree = 171
Image Index = 32 Image Degree = 162
Image Index = 33 Image Degree = 153
Image Index = 34 Image Degree = 144
Image Index = 35 Image Degree = 135
Image Index = 36 Image Degree = 126
Image Index = 37 Image Degree = 117
Image Index = 38 Image Degree = 108
Image Index = 39 Image Degree = 99
Image Index = 0 Image Degree = 90
Image Index = 1 Image Degree = 81
Image Index = 2 Image Degree = 72
Image Index = 3 Image Degree = 63
Image Index = 4 Image Degree = 54
Image Index = 5 Image Degree = 45
Image Index = 6 Image Degree = 36
Image Index = 7 Image Degree = 27
Image Index = 8 Image Degree = 18

最佳答案

根据你输入到输出的映射,我将它们粘贴到 Excel 中并得出计算度数的公式如下:

RawDegrees = 90 - (index * 9)

然后将其裁剪为 0...360(使用 while 循环环绕),您将获得最终的度数输出。通过重新排列上面的内容使 Index 成为主题,可以找到反转它的公式

    RawDegrees - 90 = - (index * 9) --- 1    RawDegrees/9.0 - 10 = -index    --- 2    Therefore    index = 10 - Degrees/9.0

This will give you the following mapping

    Degree  Discovered Index    90      0    81      1    72      2    63      3    54      4    45      5    36      6    27      7    18      8    9       9    0       10    351     -29    342     -28    333     -27    324     -26    315     -25    306     -24    297     -23    288     -22    279     -21    270     -20    261     -19    252     -18    243     -17    234     -16    225     -15    216     -14    207     -13    198     -12    189     -11    180     -10    171     -9    162     -8    153     -7    144     -6    135     -5    126     -4    117     -3    108     -2    99      -1    90      0    81      1    72      2    63      3    54      4    45      5    36      6    27      7    18      8

All you need to do is perform a wrap around to clip the answer to 0..39, e.g.

index = index < 0 ? index + 40 : index;

得到正确的输出。

顺便说一句,您的度数索引代码可以按如下方式分解以获得相同的输出(对输入 0..39 有效)

int facing_degrees = (int)(90.0 - (image_direction * 9.0));    
facing_degrees = facing_degrees < 0 ? facing_degrees + 360 : facing_degrees;

关于c++ - 如何将度数(角度)转换为面数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9016520/

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