<< 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.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Game 2302 - mathematical applications for game development. OpenStax CNX. Jan 09, 2016 Download for free at https://legacy.cnx.org/content/col11450/1.33
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Game 2302 - mathematical applications for game development' conversation and receive update notifications?

Ask