<< Chapter < Page | Chapter >> Page > |
The screen output
The text shown in Figure 6 should appear in your browser window when you open the html file in your browser.
Figure 6 . Screen output for Listing #1. |
---|
angle = 0.0
angle = 30.0angle = 60.0
angle = 90.0angle = 120.0
angle = 150.0angle = 180.0
angle = 210.0angle = 240.0
angle = 270.0angle = -60.0
angle = -30.0angle = -0.0
The End |
Structure of the script
The script shown in Listing 1 begins by defining a function named getAngle . The purpose of this function is to return an angle in degrees in the correctquadrant based on the lengths of the adjacent and opposite sides of an enclosing right triangle.
Then the script uses a while loop to test the function for a series of known angles ranging from 0 to 360 degrees inclusive.
An indeterminate result
The getAngle function calls the Math.atan method to compute the angle whose tangent is the ratio of the opposite side (y) to the adjacent side (x) of aright triangle.
If both x and y are zero, the ratio y/x is indeterminate and the value of the angle cannot be computed. In fact there is no angle corresponding to the ratio0/0. However, the function must either return the value of an angle, or must return some sort of flag indicating that computation of the angle is notpossible.
In this case, the function simply returns the value zero for the angle.
Avoiding division by zero
If the value of x is zero and the value of y is not zero, the ratio y/x is infinite. Therefore, the value of the angle cannot be computed. However, in thiscase, the angle is known to be 90 degrees (for y greater than zero) or 270 degrees (-90 degrees, for y less than zero). The getAngle function traps both of those cases and returns the correct angle in each case.
Correcting for the quadrant
The Math.atan method receives one parameter and it is either a positive or negative value. If the value is positive, the method returns an angle between 0and 90 degrees. If the value is negative, the method returns an angle between 0 and -90 degrees. Thus, the angles returned by the Math.atan method always lie in the first or fourth quadrants.
(Actually, as I mentioned earlier, +90 degrees and -90 degrees are not possible because the tangent of +90 degrees or -90 degrees is an infinitelylarge positive or negative value. However, the method can handle angles that are very close to +90 or -90 degrees.)
A negative y/x ratio
If the y/x ratio is negative, this doesn't necessarily mean that the angle lies in the fourth quadrant. That negative ratio could result from a positivevalue for y and a negative value for x. In that case, the angle would lie in the second quadrant between 90 degrees and 180 degrees.
The getAngle function tests the signs of the values for y and x. If the signs indicate that the angle lies in the second quadrant, the value returned from the Math.atan method is corrected to place the angle in the second quadrant. The corrected angle is returned by the getAngle function.
A positive y/x ratio
Similarly, if the y/x ratio is positive, this doesn't necessarily mean that the angle lies in the first quadrant. That positive ratio could result from anegative y value and a negative x value. In that case, the angle would lie in the third quadrant between 180 degrees and 270 degrees.
Notification Switch
Would you like to follow the 'Game 2302 - mathematical applications for game development' conversation and receive update notifications?