Как перевернуть тригонометрический круг под углом 45 °? - PullRequest
0 голосов
/ 21 февраля 2019

Я ищу математическую функцию, способную перевернуть тригонометрический круг вокруг «оси», расположенной на векторе 45 ° (или пи / 4 радиана).

Например:

|---------|---------|
|   x     |   f(x)  |
|---------|---------|
|   0     |   90    |
|   45    |   45    |
|   90    |   0     |
|   135   |   315   |
|   180   |   270   |
|   225   |   225   |
|   270   |   180   |
|   315   |   135   |
|---------|---------|

Просто приведу несколько примеров.

Итак, мне нужно превратить розу компаса:

Compass rose

в тригонометриюкруг:

enter image description here

Я нашел только такие вещи, как "180 - угол", но это не тот поворот, который я ищу.Возможно ли это?

1 Ответ

0 голосов
/ 21 февраля 2019

Основная трудность в вашей задаче - это «скачок» в результате, где f(90) должно быть 0, а f(91) должно быть 359.Решение состоит в том, чтобы использовать скачкообразный оператор, а именно оператор модуля, который часто представляется символом %.

В языке, подобном Python, где оператор модуля всегда возвращает положительный результат, выможно использовать

def f(x):
    return (90 - x) % 360

Некоторые языки могут возвращать отрицательный результат, если число перед оператором отрицательно.Вы можете обработать это, добавив 360 перед получением модуля, и это должно работать на всех языках с оператором модуля:

def f(x):
    return (450 - x) % 360

Вы можете продемонстрировать любую функцию с помощью:

for a in range(0, 360, 45):
    print(a, f(a))

который печатает то, что было нужно:

0 90
45 45
90 0
135 315
180 270
225 225
270 180
315 135

Если ваш язык не имеет оператора модуля, его можно смоделировать с помощью функции floor или int.Дайте мне знать, если вам нужно решение с использованием одного из них вместо модуля.

...