<< Chapter < Page Chapter >> Page >

Missing image

Create the script

Please copy the code from Listing 4 into an html file and open the html file in your browser.

Listing 4 . An exercise with three vectors in a plane.

<!---------------- File JavaScript04.html ---------------------><html><body><script language="JavaScript1.3">document.write("Start Script<br/>"); //The purpose of this function is to receive the adjacent// and opposite side values for a right triangle and to // return the angle in degrees in the correct quadrant.function getAngle(x,y){ if((x == 0)&&(y == 0)){ //Angle is indeterminate. Just return zero.return 0; }else if((x == 0)&&(y>0)){ //Avoid divide by zero denominator.return 90; }else if((x == 0)&&(y<0)){ //Avoid divide by zero denominator.return -90; }else if((x<0)&&(y>= 0)){ //Correct to second quadrantreturn Math.atan(y/x)*180/Math.PI + 180; }else if((x<0)&&(y<= 0)){ //Correct to third quadrantreturn Math.atan(y/x)*180/Math.PI + 180; }else{//First and fourth quadrants. No correction required. return Math.atan(y/x)*180/Math.PI;}//end else }//end function getAngle//------------------------------------------------------------// //The purpose of this function is to add two vectors, given// the magnitude and angle (in degrees) for each vector. // The magnitude and angle (in degrees) of the resultant// vector is returned in a two-element array, with the // magnitude in the element at index 0 and the angle in the// element at index 1. Note that this function calls the // getAngle function, which must also be provided in the// script. To use this function to subtract one vector from // another, add 180 degrees to the angle for the subtrahend// vector before passing the angle to the function. To use // this function to add more than two vectors, add the first// two vectors as normal, then add the output from this // function to the third vector, etc., until all of the// vectors have been included in the sum. function vectorSum(vecAmag,vecAang,vecBmag,vecBang){var vecResult = new Array(2); //Compute the horizontal and vertical components// of each vector. var vecAh = vecAmag*Math.cos(vecAang*Math.PI/180);var vecAv = vecAmag*Math.sin(vecAang*Math.PI/180); var vecBh = vecBmag*Math.cos(vecBang*Math.PI/180);var vecBv = vecBmag*Math.sin(vecBang*Math.PI/180); //Compute the sums of the horizontal and vertical// components from the two vectors to get the // horizontal and vertical component of the// resultant vector. var vecResultH = vecAh + vecBh;var vecResultV = vecAv + vecBv; //Use the Pythagorean theorem to compute the magnitude of// the resultant vector. vecResult[0]= Math.sqrt(Math.pow(vecResultH,2) + Math.pow(vecResultV,2));//Compute the angle of the resultant vector in degrees. vecResult[1]= getAngle(vecResultH,vecResultV); return vecResult;}//end vectorSum function //------------------------------------------------------------////Main body of script begins here. //Establish the magnitude and angle for each vector.var vecShipMag = 2;//magnitude of velocity of ship in miles/hr var vecShipAng = 0;//angle of velocity of ship in degreesvar vecPlatMag = 2;//magnitude of velocity of platform miles/hr var vecPlatAng = 45;//angle of velocity of platform in degreesvar vecManMag = 2;//Magnitude of velocity of man in miles/hr var vecManAng = 90;//angle of velocity of man in degrees//Add two vectors var platformVel =vectorSum(vecShipMag,vecShipAng,vecPlatMag,vecPlatAng); //Add in the third vectorvar manVel = vectorSum(platformVel[0],platformVel[1],vecManMag,vecManAng);//Display the magnitude and direction of the resultant vectors. document.write("Platform velocity magnitude = " +platformVel[0].toFixed(2) + " miles/hour<br/>"); document.write("Platform velocity angle = " +platformVel[1].toFixed(2) + " degrees<br/>"); document.write("Man velocity magnitude = " +manVel[0].toFixed(2) + " miles/hour<br/>"); document.write("Man velocity angle = " +manVel[1].toFixed(2) + " degrees<br/>"); document.write("End Script");</script></body></html>

Get the best College algebra course in your pocket!

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?