Tan# ( degrees# )

Параметры

degrees# = угол в градусах.

Определение

Тангенс угла. Угол измеряется в градусах.

Для углов между 0 и 90 градусами, тангенс определяется сторонами прямоугольного треугольника. И вообще тангенс – это отношение противолежащего катета к прилежащему. 

В общем, тангенс равняется отношению синуса и косинуса. (Tan#(degrees#)= Sin#(degrees#)/Cos#(degrees#))

Положительная часть оси ординат соответствует 90 градусам. Это является основным источником неразберихи в Blitz: в экранных координатах ось ординат направлена вниз, но в трехмерном мире она обычно направлена вверх.

Еще одна возможная трудность состоит в размере угла. В принципе, функция тангенса повторяется каждые 180 градусов. Так что Tan(-180), Tan(0), Tan(180), Tan(360) и т.д должны возвращать абсолютно одинаковые значения. Но на практике с дальнейшим увеличением угла от нуля уменьшается точность функции.

Также смотрите: ASin, Cos, ACos, Tan, Atan, ATan2, Учебник по Геометрии за 10-11 классы

Пример

; Пример Sin / Cos / Tan 

; Левой/Правой стрелочками изменяем угол. Escape - выход. 

Const width = 640, height = 480 
Const radius# = .2 * height 
Const KEY_ESC = 1, KEY_LEFT = 203, KEY_RIGHT = 205 

Graphics width, height 
SetBuffer BackBuffer( ) 
Origin width / 3, height / 2 

angle# = 0.0 

While Not KeyDown( KEY_ESC ) 

; Помните: It is usually best to avoid very large angles. 
; The 'If angle...' lines show one way to do this. 
; Mod is another possibility. 

; Заметка: Для избегания очень больших углов этот способ, в основном, наилучший.
; Строки с 'If angle...' демонстрируют один из путей, чтобы этого добиться.
; Использование функции Mod - это еще одна такая возможность.

If KeyDown( KEY_LEFT ) Then angle = angle - .5 
; If angle < 0.0 Then angle = angle + 360 

If KeyDown( KEY_RIGHT ) Then angle = angle + .5 
; If angle >= 360.0 Then angle = angle - 360 

Cls 

Color 80, 80, 0 ; pale yellow circle 
Oval -radius, -radius, 2 * radius, 2 * radius, False 

For a# = 0.0 To Abs( angle Mod 360 ) Step .5 

x# = radius * Cos( a ) ; (x,y) is a point on the circle 
y# = radius * Sin( a ) ; corresponding to angle a. 

If ( angle Mod 360 < 0 ) Then y = -y ; меняем значение отрицательного угла на противоположное.
WritePixel x, y, $ffff00 ; ярко-желтый 

Next 

Color 255, 255, 0 ; желтый 
Line 0, 0, radius * Cos( angle ), radius * Sin( angle ) 

Color 0, 255, 0 ; зеленый 
Line 0, 0, radius * Cos( angle ), 0 
Text radius * 1.5, 10, "Cos( angle ) = " + Cos( angle ) 

Color 255, 0, 0 ; red 
Line radius * Cos( angle ), 0, radius * Cos( angle ), radius * Sin( angle ) 
Text radius * 1.5, -10, "Sin( angle ) = " + Sin( angle ) 

Color 255, 255, 255 
Text radius * 1.5, -30, " angle = " + angle 
Text radius * 1.5, 30, "Tan( angle ) = " + Tan( angle ) 

Flip 

Wend 

End

Главная страница

Нажмите сюда, чтобы увидеть последнюю версию этой страницы в Интернете