ATN: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
No edit summary
Tag: Undo
No edit summary
Tag: Reverted
Line 12: Line 12:


{{PageDescription}}
{{PageDescription}}
* To convert from radians to degrees, multiply radians * (180 / π).
* To convert from radians to degrees, multiply radians * (180 /
* The ''tangent'' value would be equal to the tangent value of an angle. Ex: '''{{text|[[TAN]](ATN(1)) <nowiki>=</nowiki> 1|green}}'''
* The ''tangent'' value would be equal to the tangent value of an angle. Ex: '''{{text|[[TAN]](ATN(1)) <nowiki>=</nowiki> 1|green}}'''
* The function return value is between -&pi; / 2 and &pi; / 2.
* The function return value is between -2 and 2.




{{PageExamples}}
{{PageExamples}}
''Example 1:'' When the [[TAN]]gent value equals 1, the line is drawn at a 45 degree angle (.7853982 radians) where [[SIN]] / [[COS]] = 1.
''Example 1:'' When the [[TAN]]gent value equals 1, the line is drawn at a 45 degree angle (.7853982 radians) where [[SIN]] / [[COS]] = 1.
{{CodeStart}} '' ''
{{CodeStart}}
{{Cl|SCREEN}} 12
{{Cl|SCREEN}} 12
x = 100 * {{Cl|COS}}({{Cl|ATN}}(1))
x = 100 * {{Cl|COS}}({{Cl|ATN}}(1))
y = 100 * {{Cl|SIN}}({{Cl|ATN}}(1))
y = 100 * {{Cl|SIN}}({{Cl|ATN}}(1))
{{Cl|LINE}} (200, 200)-(200 + x, 200 + y) '' ''
{{Cl|LINE}} (200, 200)-(200 + x, 200 + y)
{{CodeEnd}}
{{CodeEnd}}




''Example 2:'' [[ATN]] can be used to define &pi; in [[SINGLE]] or [[DOUBLE]] precision. The calculation cannot be used as a [[CONST]]ant.
''Example 2:'' [[ATN]] can be used to define 㠩n [[SINGLE]] or [[DOUBLE]] precision. The calculation cannot be used as a [[CONST]]ant.
{{CodeStart}} '' ''
{{CodeStart}}
Pi = 4 * {{Cl|ATN}}(1)  '{{Cl|SINGLE}} precision
Pi = 4 * {{Cl|ATN}}(1)  '{{Cl|SINGLE}} precision
Pi# = 4 * {{Cl|ATN}}(1#) '{{Cl|DOUBLE}} precision
Pi# = 4 * {{Cl|ATN}}(1#) '{{Cl|DOUBLE}} precision
PRINT Pi, Pi# '' ''
PRINT Pi, Pi#
{{CodeEnd}}
{{CodeEnd}}
:''Note:'' You can use QB64's native [[_PI]] function.
:''Note:'' You can use QB64's native [[_PI]] function.




''Example 3:'' Finds the angle from the center point to the mouse pointer.  
''Example 3:'' Finds the angle from the center point to the mouse pointer.
{{CodeStart}} '' ''
{{CodeStart}}
{{Cl|SCREEN}} {{Cl|_NEWIMAGE}}(640, 480, 32)
{{Cl|SCREEN}} {{Cl|_NEWIMAGE}}(640, 480, 32)
x1! = 320
x1! = 320
Line 74: Line 74:
   getangle# = {{Cl|ATN}}((x2# - x1#) / (y2# - y1#)) * -57.2957795131 + 180
   getangle# = {{Cl|ATN}}((x2# - x1#) / (y2# - y1#)) * -57.2957795131 + 180
{{Cl|END IF}}
{{Cl|END IF}}
{{Cl|END FUNCTION}} '' ''
{{Cl|END FUNCTION}}
{{CodeEnd}}{{small|Function by Galleon}}
{{CodeEnd}}{{small|Function by Galleon}}



Revision as of 23:01, 22 January 2023

The ATN or arctangent function returns the angle in radians of a numerical tangent value.


Syntax

radianAngle = ATN(tangent!)


Template:Parameters

  • The return is the tangent!'s angle in radians.
  • tangent! SINGLE or DOUBLE values are used by the function. EX:Pi = 4 * ATN(1)


Description

  • To convert from radians to degrees, multiply radians * (180 / 㩮
  • The tangent value would be equal to the tangent value of an angle. Ex: TAN(ATN(1)) = 1
  • The function return value is between -㠯 2 and 㠯 2.


Examples

Example 1: When the TANgent value equals 1, the line is drawn at a 45 degree angle (.7853982 radians) where SIN / COS = 1.

SCREEN 12
x = 100 * COS(ATN(1))
y = 100 * SIN(ATN(1))
LINE (200, 200)-(200 + x, 200 + y)


Example 2: ATN can be used to define 㠩n SINGLE or DOUBLE precision. The calculation cannot be used as a CONSTant.

Pi = 4 * ATN(1)   'SINGLE precision
Pi# = 4 * ATN(1#) 'DOUBLE precision
PRINT Pi, Pi#
Note: You can use QB64's native _PI function.


Example 3: Finds the angle from the center point to the mouse pointer.

SCREEN _NEWIMAGE(640, 480, 32)
x1! = 320
y1! = 240

DO
  PRESET (x1!, y1!), _RGB(255, 255, 255)
  dummy% = _MOUSEINPUT
  x2! = _MOUSEX
  y2! = _MOUSEY
  LINE (x1, y1)-(x2, y2), _RGB(255, 0, 0)
  LOCATE 1, 1: PRINT getangle(x1!, y1!, x2!, y2!)
  _DISPLAY
  _LIMIT 200
  CLS
LOOP UNTIL INKEY$ <> ""
END

FUNCTION getangle# (x1#, y1#, x2#, y2#) 'returns 0-359.99...
IF y2# = y1# THEN
  IF x1# = x2# THEN EXIT FUNCTION
  IF x2# > x1# THEN getangle# = 90 ELSE getangle# = 270
  EXIT FUNCTION
END IF
IF x2# = x1# THEN
  IF y2# > y1# THEN getangle# = 180
  EXIT FUNCTION
END IF
IF y2# < y1# THEN
  IF x2# > x1# THEN
    getangle# = ATN((x2# - x1#) / (y2# - y1#)) * -57.2957795131
  ELSE
    getangle# = ATN((x2# - x1#) / (y2# - y1#)) * -57.2957795131 + 360
  END IF
ELSE
  getangle# = ATN((x2# - x1#) / (y2# - y1#)) * -57.2957795131 + 180
END IF
END FUNCTION
Function by Galleon


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage