<< Chapter < Page | Chapter >> Page > |
Display the results
Finally Listing 2 calls the document.write method several times in succession to display the values stored in some of the variables mentioned above in thebrowser window as shown in Figure 7 . As you can see, the magnitude and angle of the resultant agrees with the estimate that I made using the graphic methodearlier.
To subtract one vector from another using the mathematical approach, simply reverse the algebraic sign on the horizontal and vertical components for thesubtrahend vector and perform the addition shown in Listing 2 .
Let's work through a problem that requires the addition of four vectors.
A graphical solution
First I would like for you to lay out the vectors, tail-to-head on graph paper to create a solution to this problem.
Pretend that you take a walk consisting of the following sequential segments. Angles are specified relative to east with east being zero degrees. Positiveangles are counter-clockwise and negative angles are clockwise.
The segments are as follows:
What is your final displacement?
When you reach the end of the walk, what is your displacement (distance and direction) relative to the location at which you began the walk. You should beable to do a reasonable job of measuring the displacement using your vector diagram.
A mathematical solution
Please copy the code shown in Listing 3 into an html file and open the html file in your browser.
Listing 3 . The sum of four vectors.
<!-- File JavaScript03.html --><html><body><script language="JavaScript1.3">//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//Specify the magnitudes and angles of four vectors.
//Convert the angles from degrees to radians.var vecAmag = 12;
var vecAang = 20*Math.PI/180;//degrees*radians/degrees=radiansvar vecBmag = 8;
var vecBang = 120*Math.PI/180;//degrees*radians/degrees=radiansvar vecCmag = 10.5;
var vecCang = -74*Math.PI/180;//degrees*radians/degrees=radiansvar vecDmag = 12.5;
var vecDang = 145*Math.PI/180;//degrees*radians/degrees=radians//Compute the horizontal and vertical components of each vector.
var vecAh = vecAmag*Math.cos(vecAang);var vecAv = vecAmag*Math.sin(vecAang);
var vecBh = vecBmag*Math.cos(vecBang);var vecBv = vecBmag*Math.sin(vecBang);
var vecCh = vecCmag*Math.cos(vecCang);var vecCv = vecCmag*Math.sin(vecCang);
var vecDh = vecDmag*Math.cos(vecDang);var vecDv = vecDmag*Math.sin(vecDang);
//Compute the sums of the horizontal and vertical components from// the four vectors to get the horizontal and vertical component
// of the resultant vector.var vecResultH = vecAh + vecBh + vecCh + vecDh;
var vecResultV = vecAv + vecBv + vecCv + vecDv;//Use the Pythagorean theorem to compute the magnitude of the
// resultant vector.var vecResultMag = Math.sqrt(Math.pow(vecResultH,2) +
Math.pow(vecResultV,2));//Compute the angle of the resultant vector.
vecResultAng = getAngle(vecResultH,vecResultV);document.write("Hello from JavaScript" + "<br/>")
document.write("vecResultMag = " + vecResultMag.toFixed(2) + "<br/>");
document.write("vecResultAng = " + vecResultAng.toFixed(2) + "<br/>");
document.write("The End")</script></body></html>
Notification Switch
Would you like to follow the 'Game 2302 - mathematical applications for game development' conversation and receive update notifications?