<< Chapter < Page | Chapter >> Page > |
Declare and initialize variables
The code in Listing 1 begins by declaring and initializing variables named velocity and distance . Note that the units are shown in the comments. I recommend that you always dothat in order to keep the units straight.
Perform the arithmetic
Then Listing 1 declares a variable named time and sets its value equal to distance divided by velocity . Once again, note the treatment of the units in the comments, showing that the units for the result of the division are hours.
Display the results
Finally, Listing 1 calls the document.write method several times in succession to display the results shown in Figure 1 .
A hockey puck is struck by a player causing it to travel northeast at a uniform velocity of 50 feet per second for 15 feet, at which point it is struck by another player.
When struck by the second player, the direction of motion is changed to northwest witha uniform velocity of 60 feet per second.
It is stopped by a third player after traveling 20 feet in the northwest direction.
Vector diagram for the hockey puck
Figure 2 shows a vector diagram for the hockey puck.
Figure 2 - Vector diagram for the hockey puck.
Let's write a script to solve the problem
Please copy the code from Listing 2 into an html file and open it in your browser.
Listing 2 . An exercise on average velocity.
<!---------------- File JavaScript02.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//Compute the time required to traverse each leg. Identify
// the two legs as A and B.var vecAmag = 15;//displacement in feet
var vecAang = 45;//displacement angle in degreesvar vecAvel = 50;//velocity magnitude in feet per second
var timeA = vecAmag/vecAvel;//feet/(feet/second) = secondsvar vecBmag = 20;//displacement in feet
var vecBang = 135;//displacement angle in degreesvar vecBvel = 60;//velocity magnitude in feet per second
var timeB = vecBmag/vecBvel;//feet/(feet/second) = seconds//Compute the overall displacement
//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 in feet.
var vecResultMag = Math.sqrt(Math.pow(vecResultH,2) +Math.pow(vecResultV,2));
//Compute the angle of the resultant vector in degrees.vecResultAng = getAngle(vecResultH,vecResultV);
var totalTime = timeA + timeB;//secondsvar vecVelMag = vecResultMag/totalTime;//feet/second
var vecVelAng = vecResultAng;//degreesdocument.write("Time for leg A = " + timeA.toFixed(2) +
" seconds<br/>");
document.write("Time for leg B = " + timeB.toFixed(2) +" seconds<br/>");
document.write("Displacement magnitude = " +vecResultMag.toFixed(2) + " feet<br/>");
document.write("Displacement angle = " +vecResultAng.toFixed(2) + " degrees<br/>");
document.write("Total time = " + totalTime.toFixed(2) +" seconds<br/>");
document.write("Average velocity magnitude = " +vecVelMag.toFixed(2) + " feet/second<br/>");
document.write("Average velocity angle = " +vecVelAng.toFixed(2) + " degrees<br/>");
document.write("End Script");</script></body></html>
Notification Switch
Would you like to follow the 'Game 2302 - mathematical applications for game development' conversation and receive update notifications?