5.22. Тригонометрия в градусах, радианах и градах
5.22. Тригонометрия в градусах, радианах и градах
При измерении дуг математической, а заодно и «естественной» единицей измерения является радиан. По определению, угол в один радиан соответствует длине дуги, равной радиусу окружности. Немного поразмыслив, легко понять, что угол 2? радиан соответствует всей окружности.
Дуговой градус, которым мы пользуемся в повседневной жизни, — пережиток древневавилонской системы счисления по основанию 60: в ней окружность делится на 360 градусов. Менее известна псевдометрическая единица измерения град, определенная так, что прямой угол составляет 100 град (а вся окружность — 400 град).
При вычислении тригонометрических функций в языках программирования по умолчанию чаще всего используются радианы, и Ruby в этом отношении не исключение. Но мы покажем, как производить вычисления и в градусах, и в градах для тех читателей, которые по образованию не инженеры, а по происхождению не древние вавилоняне.
Поскольку число любых угловых единиц в окружности — константа, можно легко переходить от одних единиц к другим. Мы определим соответствующие константы и будем пользоваться ими в коде. Для удобства поместим их в модуль Math.
module Math
RAD2DEG = 360.0/(2.0*PI) # Радианы в градусы.
RAD2GRAD = 400.0/(2.0*РI) # Радианы в грады.
end
Теперь можно определить и новые тригонометрические функции. Поскольку мы всегда преобразуем в радианы, то будем делить на определенные выше коэффициенты. Можно было бы поместить определения функций в тот же модуль Math, но мы этого делать не стали.
def sin_d(theta)
Math.sin(theta/Math::RAD2DEG)
end
def sin_g(theta)
Math.sin(theta/Math::RAD2GRAD)
end
Функции cos и tan можно было бы определить аналогично.
С функцией atan2 дело обстоит несколько сложнее. Она принимает два аргумента (длины противолежащей и прилежащей сторон прямоугольного треугольника). Поэтому мы преобразуем результат, а не аргумент:
def atan2_d(y,x)
Math.atan2(у,x)/Math::RAD2DEG
end
def atan2_g(y,x)
Math.atan2(y, x)/Math::RAD2GRAD
end
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Тригонометрия
Тригонометрия sinВозвращает синус аргумента.Синтаксис:float sin(float $arg)Аргумент задается в радианах.$x = sin(M_PI_2); // $x = 1cosВозвращает косинус аргумента.Синтаксис:float cos(float $arg)$x = cos(0); // $x = 0$x = cos(M_PI); // $x = -1tanВозвращает тангенс аргумента, заданного в радианах.Синтаксис:float tan(float $arg)$x =
5.23. Неэлементарная тригонометрия
5.23. Неэлементарная тригонометрия В ранних версиях Ruby не было функций arcsin и arccos. Равно как и гиперболических функций sinh, cosh и tanh. Их определения были приведены в первом издании этой книги, но сейчас они являются стандартной частью модуля
ОГОРОД КОЗЛОВСКОГО: Тригонометрия
ОГОРОД КОЗЛОВСКОГО: Тригонометрия Автор: Козловский ЕвгенийБуквально - «измерение треугольников». Сегодня я намерен рассказать, как мерил парочку. Парочку, объединенную дужкой. То есть речь пойдет о наушниках с чашками треугольной формы. Выпущены они фирмой Cellink ,