Почему при расчете косинуса и синуса знаки слишком часто изменяются? При расчете синуса и косинуса углов от 0 до 360 знаки этих функций очень часто меняются. Вообще хочу заставить двигаться объект по окружности, но из-за этого он просто прыгает из одной четверти в другую. Вот кодx = (r * MathUtils.cos(angle));
y = (r* MathUtils.sin(angle));Логи (много логов)
Angle: A = 36.552475cosA = 0.41155487 sinA = -0.911385
Angle: A = 37.184708cosA = 0.87058604 sinA = -0.49201626
Angle: A = 38.290146cosA = 0.83036494 sinA = 0.5572199
Angle: A = 39.400665cosA = -0.13038483 sinA = 0.9914635
Angle: A = 39.400665cosA = -0.13038483 sinA = 0.9914635
Angle: A = 40.00627cosA = -0.6715978 sinA = 0.74091595
Angle: A = 40.51541cosA = -0.9475571 sinA = 0.31958655
Angle: A = 41.112106cosA = -0.963396 sinA = -0.2680822
Angle: A = 41.112106cosA = -0.963396 sinA = -0.2680822
Angle: A = 41.633545cosA = -0.7018248 sinA = -0.71234965
Angle: A = 42.22084cosA = -0.18950734 sinA = -0.9818793
Angle: A = 42.79741cosA = 0.37640074 sinA = -0.9264569
Angle: A = 43.331665cosA = 0.7957011 sinA = -0.6056895
Angle: A = 43.8983cosA = 0.9964743 sinA = -0.08389824
Angle: A = 44.443726cosA = 0.89541745 sinA = 0.4452276
Angle: A = 44.999985cosA = 0.52533495 sinA = 0.8508955
Angle: A = 44.999985cosA = 0.52533495 sinA = 0.8508955
Angle: A = 46.1017cosA = -0.5214986 sinA = 0.8532521
Angle: A = 46.63658cosA = -0.8835964 sinA = 0.4682493
Angle: A = 46.63658cosA = -0.8835964 sinA = 0.4682493
Angle: A = 47.72632cosA = -0.8239619 sinA = -0.5666452
Angle: A = 47.72632cosA = -0.8239619 sinA = -0.5666452
Angle: A = 48.81407cosA = 0.11910213 sinA = -0.992882
Angle: A = 48.81407cosA = 0.11910213 sinA = -0.992882
Angle: A = 49.398697cosA = 0.6472801 sinA = -0.7622522
Angle: A = 49.899094cosA = 0.9336271 sinA = -0.3582463
Angle: A = 50.980606cosA = 0.7550122 sinA = 0.65571076
Angle: A = 51.58197cosA = 0.25157627 sinA = 0.96783745
Angle: A = 52.05786cosA = -0.21977375 sinA = 0.9755509
Angle: A = 52.6668cosA = -0.738284 sinA = 0.67449
Angle: A = 52.6668cosA = -0.738284 sinA = 0.67449
Angle: A = 53.746162cosA = -0.94305867 sinA = -0.3326265
Angle: A = 53.746162cosA = -0.94305867 sinA = -0.3326265
Angle: A = 54.37207cosA = -0.5694208 sinA = -0.82204616
Angle: A = 54.81929cosA = -0.15791744 sinA = -0.9874523
Angle: A = 54.81929cosA = -0.15791744 sinA = -0.9874523
Angle: A = 55.451637cosA = 0.45624056 sinA = -0.88985646
Angle: A = 55.88553cosA = 0.78806365 sinA = -0.6155938
Angle: A = 57.171455cosA = 0.8122556 sinA = 0.58330166
Angle: A = 57.171455cosA = 0.8122556 sinA = 0.58330166
Angle: A = 57.82878cosA = 0.2866066 sinA = 0.95804834
Angle: A = 58.90268cosA = -0.70556164 sinA = 0.70864856
Angle: A = 59.57421cosA = -0.99327385 sinA = 0.11578899
Angle: A = 60.64225cosA = -0.5800635 sinA = -0.81457126
Angle: A = 61.69924cosA = 0.42429656 sinA = -0.9055233
Angle: A = 62.38697cosA = 0.9026612 sinA = -0.43035185
Angle: A = 63.083443cosA = 0.9685179 sinA = 0.24894385
Angle: A = 63.083443cosA = 0.9685179 sinA = 0.24894385
Angle: A = 63.43495cosA = 0.823582 sinA = 0.56719726
Angle: A = 64.13367cosA = 0.26575056 sinA = 0.9640418
Angle: A = 64.8407cosA = -0.42417336 sinA = 0.905581
Angle: A = 64.8407cosA = -0.42417336 sinA = 0.905581
Angle: A = 64.8407cosA = -0.42417336 sinA = 0.905581
Angle: A = 65.87902cosA = -0.99554527 sinA = 0.09428478
Angle: A = 65.87902cosA = -0.99554527 sinA = 0.09428478
Angle: A = 66.59529cosA = -0.8128048 sinA = -0.5825361
Angle: A = 67.31944cosA = -0.22291072 sinA = -0.97483885
Angle: A = 68.0513cosA = 0.48560753 sinA = -0.8741769
Angle: A = 68.0513cosA = 0.48560753 sinA = -0.8741769
Angle: A = 69.0755cosA = 0.99921846 sinA = -0.03952759
Angle: A = 69.0755cosA = 0.99921846 sinA = -0.03952759
Angle: A = 69.8142cosA = 0.76538116 sinA = 0.6435773
Angle: A = 70.55997cosA = 0.12553558 sinA = 0.9920891
Angle: A = 71.312675cosA = -0.5865891 sinA = 0.8098847
Angle: A = 72.07208cosA = -0.9830192 sinA = 0.18350273
Angle: A = 72.07208cosA = -0.9830192 sinA = 0.18350273
Angle: A = 72.83808cosA = -0.83566695 sinA = -0.5492365
Angle: A = 72.83808cosA = -0.83566695 sinA = -0.5492365
Angle: A = 74.389015cosA = 0.53253084 sinA = -0.84641063
Angle: A = 75.173546cosA = 0.9748659 sinA = -0.22279231
Angle: A = 75.173546cosA = 0.9748659 sinA = -0.22279231
Angle: A = 75.96376cosA = 0.8443011 sinA = 0.535869
Angle: A = 76.1593cosA = 0.7240929 sinA = 0.68970245
Angle: A = 77.7352cosA = -0.693387 sinA = 0.7205654
Angle: A = 77.7352cosA = -0.693387 sinA = 0.7205654
Angle: A = 78.53047cosA = -0.99995637 sinA = 0.009344402
Angle: A = 78.53047cosA = -0.99995637 sinA = 0.009344402
Angle: A = 79.330215cosA = -0.7035617 sinA = -0.7106341
Angle: A = 79.330215cosA = -0.7035617 sinA = -0.7106341
Angle: A = 80.94211cosA = 0.7389398 sinA = -0.67377144
Angle: A = 80.94211cosA = 0.7389398 sinA = -0.67377144
Angle: A = 81.869896cosA = 0.98228884 sinA = 0.18737285
Angle: A = 82.673615cosA = 0.54684466 sinA = 0.8372341
Angle: A = 82.673615cosA = 0.54684466 sinA = 0.8372341
Angle: A = 83.480194cosA = -0.2260188 sinA = 0.97412294
Angle: A = 84.289406cosA = -0.86098367 sinA = 0.50863254
Angle: A = 85.10088cosA = -0.9616386 sinA = -0.27431935
Angle: A = 85.10088cosA = -0.9616386 sinA = -0.27431935
Angle: A = 85.91438cosA = -0.46126023 sinA = -0.8872649
Angle: A = 86.72954cosA = 0.32946792 sinA = -0.9441668
Angle: A = 86.72954cosA = 0.32946792 sinA = -0.9441668
Angle: A = 88.36343cosA = 0.9215152 sinA = 0.3883422
Angle: A = 89.18154cosA = 0.34651107 sinA = 0.93804586
Angle: A = 89.18154cosA = 0.34651107 sinA = 0.93804586
Angle: A = 90.0cosA = -0.44807363 sinA = 0.89399666
Angle: A = 90.81846cosA = -0.958891 sinA = 0.28377473
Angle: A = 91.63657cosA = -0.8626115 sinA = -0.50586706
Angle: A = 91.63657cosA = -0.8626115 sinA = -0.50586706
Angle: A = 92.45403cosA = -0.22110794 sinA = -0.97524935
Angle: A = 93.270485cosA = 0.5592673 sinA = -0.8289874
Angle: A = 93.270485cosA = 0.5592673 sinA = -0.8289874
Angle: A = 94.08564cosA = 0.9868841 sinA = -0.16143017
Angle: A = 94.89909cosA = 0.7952879 sinA = 0.6062319
Angle: A = 95.710594cosA = 0.10777204 sinA = 0.9941756
Angle: A = 95.710594cosA = 0.10777204 sinA = 0.9941756
Angle: A = 96.519775cosA = -0.6451346 sinA = 0.7640689
Angle: A = 97.32641cosA = -0.99801844 sinA = 0.062922284
Angle: A = 98.130104cosA = -0.73797494 sinA = -0.6748282
Angle: A = 98.930595cosA = -0.029568879 sinA = -0.99956274
Angle: A = 98.930595cosA = -0.029568879 sinA = -0.99956274
Angle: A = 99.72758cosA = 0.6942725 sinA = -0.7197122
Angle: A = 99.72758cosA = 0.6942725 sinA = -0.7197122
Angle: A = 100.52079cosA = 0.99994826 sinA = -0.0101746395
Angle: A = 101.30994cosA = 0.7116364 sinA = 0.70254797
Angle: A = 102.09476cosA = 0.007004104 sinA = 0.99997544
Angle: A = 102.26477cosA = -0.16228831 sinA = 0.9867434
Angle: A = 103.840675cosA = -0.9859015 sinA = -0.16732697
Angle: A = 104.62087cosA = -0.58305293 sinA = -0.8124342
Angle: A = 104.62087cosA = -0.58305293 sinA = -0.8124342
Angle: A = 104.62087cosA = -0.58305293 sinA = -0.8124342
Angle: A = 105.61101cosA = 0.359427 sinA = -0.9331732
Angle: A = 106.389534cosA = 0.9111969 sinA = -0.41197112
Angle: A = 106.389534cosA = 0.9111969 sinA = -0.41197112
Angle: A = 107.16192cosA = 0.9401356 sinA = 0.34080067
Angle: A = 108.17799cosA = 0.20547865 sinA = 0.9786616
Angle: A = 108.9465cosA = -0.532504 sinA = 0.8464275
Angle: A = 109.70798cosA = -0.9694628 sinA = 0.2452384
Angle: A = 109.70798cosA = -0.9694628 sinA = 0.2452384
Angle: A = 110.74608cosA = -0.70360684 sinA = -0.71058947
Angle: A = 111.80141cosA = 0.27141955 sinA = -0.9624611
Angle: A = 112.55724cosA = 0.8576613 sinA = -0.51421505
Angle: A = 112.55724cosA = 0.8576613 sinA = -0.51421505
Angle: A = 113.62938cosA = 0.86177206 sinA = 0.50729567
Angle: A = 114.376465cosA = 0.28754923 sinA = 0.9577659
Angle: A = 114.376465cosA = 0.28754923 sinA = 0.9577659
Angle: A = 115.46335cosA = -0.71401525 sinA = 0.70013016
Angle: A = 116.200096cosA = -0.9992461 sinA = 0.038822293
Angle: A = 117.299576cosA = -0.48830703 sinA = -0.8726719
Angle: A = 118.02452cosA = 0.21314847 sinA = -0.97701985
Angle: A = 118.412674cosA = 0.5670743 sinA = -0.82366663
Angle: A = 118.412674cosA = 0.5670743 sinA = -0.82366663
Angle: A = 119.134285cosA = 0.96983683 sinA = -0.2437551
Angle: A = 120.25644cosA = 0.6402917 sinA = 0.76813185
Angle: A = 120.25644cosA = 0.6402917 sinA = 0.76813185
Angle: A = 121.39027cosA = -0.42498857 sinA = 0.9051987
Angle: A = 122.09259cosA = -0.9091644 sinA = 0.41643733
Angle: A = 123.23171cosA = -0.7586233 sinA = -0.6515295
Angle: A = 123.23171cosA = -0.7586233 sinA = -0.6515295
Angle: A = 124.38034cosA = 0.28348932 sinA = -0.9589754
Angle: A = 124.38034cosA = 0.28348932 sinA = -0.9589754
Angle: A = 125.53769cosA = 0.9920704 sinA = -0.12568367
Angle: A = 125.53769cosA = 0.9920704 sinA = -0.12568367
Angle: A = 126.209465cosA = 0.85473365 sinA = 0.5190669
Angle: A = 126.209465cosA = 0.85473365 sinA = 0.5190669
Angle: A = 126.209465cosA = 0.85473365 sinA = 0.5190669
Angle: A = 126.70285cosA = 0.5069581 sinA = 0.86197066
Angle: A = 127.36667cosA = -0.13178179 sinA = 0.99127877
Angle: A = 128.01895cosA = -0.70643526 sinA = 0.7077777
Angle: A = 128.53017cosA = -0.9623893 sinA = 0.27167413
Angle: A = 129.69907cosA = -0.62648004 sinA = -0.7794374
Angle: A = 129.69907cosA = -0.62648004 sinA = -0.7794374
Angle: A = 130.8724cosA = 0.4761848 sinA = -0.87934524
Angle: A = 130.8724cosA = 0.4761848 sinA = -0.87934524
Angle: A = 131.49646cosA = 0.9002593 sinA = -0.43535402
Angle: A = 132.04922cosA = 0.9947685 sinA = 0.10215489
Angle: A = 132.66269cosA = 0.75456995 sinA = 0.6562196
Angle: A = 133.22853cosA = 0.2851442 sinA = 0.95848465
Angle: A = 133.83086cosA = -0.30807462 sinA = 0.9513622
Помогите !

21 Авг 2019 в 06:06
240 +1
1
Ответы
1

Это происходит из-за того, что значения косинуса и синуса зависят от угла, и при движении по окружности угол изменяется непрерывно, что вызывает частые изменения знаков. Ваш объект "прыгает" из одной четверти в другую из-за быстрой смены знаков синуса и косинуса при изменении угла.

Чтобы исправить эту проблему, вы можете использовать функции Math.atan2 или Math.atan2d для вычисления угла между точкой и центром окружности. Эти функции обеспечивают правильную обработку знаков и углов от 0 до 360 градусов.

Пример использования Math.atan2 для вычисления координат x и y:

double angle = Math.atan2(y, x);
double r = Math.sqrt(x*x + y*y);

Этот код поможет вам двигать объект плавно по окружности, избегая прыжков из одной четверти в другую.

20 Апр в 13:23
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 93 190 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир