1 (изменено: Clannad5, 2022-06-02 15:55:11)

Тема: AHK: изменение положительного числа на отрицательный с условием

Здравствуйте!
Идея которую я хочу осуществить:
Нужно вычислять градус поворота от числа, которое может расти до бесконечности.


Изначальный угол поворота с которого всё начинается = 0
через 5 секунд угол поворота меняется на = 920 (тут может быть любое число, хоть 10500)
Если угол поворота каждый раз проходит через значение 180, то обратить в минусовой просчёт и начать с -0.
То есть, угол поворота может быть максимальный в обратную сторону -180, в положительную 180, в целом это будет 360 градусов, но цифра дальше 180 не может быть установлена.
по итогу из всех просчётов мы должны выяснить, какой угол поворота в 920, то есть должно получиться: 920/180 = 5
5 раз мы должны сменить с положительного на отрицательный, то есть [+-+-+] по итогу у нас должен получиться положительный угол поворота = 20

Что я хочу узнать от тех, кто в этом хоть чуть-чуть разбирается:
Как можно исходя от значения в последовательности, находить в конечном итоге минус или плюс.
К примеру:
0 это +
1 это -
2 это +
3 это -
и т.д.
Как это вычислять в коде AHK, чтобы было как можно меньше строк кода?

Как я нахожу 360 градусов:


X = 365 ;угол поворота = 365
A := X/360 ;из целого числа я делю на 360(1 поворот)
A := Floor(A) ; Округляю сколько поворотов уже совершилось
A := A*360 ;Умножаю каждый поворот на 360 градусов
X -= A ;Вычитаю из 365 полученное количество поворотов
Msgbox, % X ;Вывожу в Msgbox текущий поворот, который равен 5 градусам.
ExitApp

Когда я умножаю A*360, я хочу знать, какое значение должно быть в конечном итоге, минусовое или плюсовое. К примеру если я умножаю на 1, то будет минусовое значение, если на 2, то плюсовое.
Число на которое умножаю может быть любым.

UPD:
Пришло только на ум, это проверять, делится ли число на 2, если да, то +, если нет, то -.

2 (изменено: __Михаил__, 2022-06-03 19:24:47)

Re: AHK: изменение положительного числа на отрицательный с условием

На ум пришло такое:

D := 365, D2 := 920
Msgbox, % D " =>`t" Deg(D) "`n" D2 " =>`t" Deg(D2)
Return

Deg(D){
 A := Mod(D, 180)
 Return (Mod(A, 2) ? "-" : "") A
}
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: изменение положительного числа на отрицательный с условием

__Михаил__
а как пофиксить подобное, если переменная имеет отрицательное значение, например -920:
https://i.imgur.com/NpanLwy.png

4 (изменено: __Михаил__, 2022-06-03 19:21:45)

Re: AHK: изменение положительного числа на отрицательный с условием

Убрать знак '+' в кавычках. Я уж думал вы догадаетесь сами. Обновил код.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

5

Re: AHK: изменение положительного числа на отрицательный с условием

Хотя тоже неправильно.

F2::
T=
For k,v in [920, -920, 365, -365, 10500, -10500]{
 T .= v "`t >>`t" Deg(v) "`n"
}
Msgbox, % T
Return

Deg(D){
 A := Mod(D, 180)
 Return (Mod(A, 2) ? -0 : 0) + A
}

Так вроде верно будет.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

6

Re: AHK: изменение положительного числа на отрицательный с условием

__Михаил__
То что нужно, спасибо!