Skip to content

Instantly share code, notes, and snippets.

@dharmatech
Created February 7, 2012 08:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dharmatech/1758382 to your computer and use it in GitHub Desktop.
Save dharmatech/1758382 to your computer and use it in GitHub Desktop.
// A cannon with a muzzle speed of 1000 m/s is used to
// start an avalanche on a mountain slope. The target is
// 2000 m from the cannon horizontally and 800 m above
// the cannon. At what angle, above the horizontal, should
// the cannon be fired?
// PSE PRO 4.17
// xi = 0
// yi = 0
// xf = 2000
// yf = 800
// vi = 1000
// ax = 0
// ay = -9.8
// (2.3.1): xf = xi + vi cos(th) t + 1/2 ax t^2
// xf = vi cos(th) t
// t t = xf / (vi cos(th)) (2.3.1.1)
// (2.4.1): yf = yi + vi sin(th) t + 1/2 ay t^2
// yf = vi sin(th) t + 1/2 ay t^2
// /. (2.3.1.1) yf = vi sin(th) {xf / (vi cos(th))} + 1/2 ay {xf / (vi cos(th))}^2
// yf = sin(th) xf / cos(th) + 1/2 ay xf^2 / (vi^2 cos^2(th))
// * 2 cos^2(th) 2 cos^2(th) yf = 2 cos^2(th) sin(th) xf / cos(th) + 2 cos^2(th) 1/2 ay xf^2 / (vi^2 cos^2(th))
// 2 cos^2(th) yf = 2 cos(th) sin(th) xf + ay xf^2 / vi^2
// power-reducing / half angle identity cos^2(x) = [1 + cos(2x)]/2 :
// 2 [1 + cos(2 th)]/2 yf = 2 cos(th) sin(th) xf + ay xf^2 / vi^2
// [1 + cos(2 th)] yf = 2 cos(th) sin(th) xf + ay xf^2 / vi^2
// double angle formula 2 sin(x) cos(x) = sin(2x) :
// [1 + cos(2 th)] yf = sin(2 th) xf + ay xf^2 / vi^2
// yf + yf cos(2 th) = sin(2 th) xf + ay xf^2 / vi^2
// sin(2 th) xf - yf cos(2 th) = yf - ay xf^2 / vi^2
// xf = r cos(phi)
// yf = r sin(phi)
// sin(2 th) r cos(phi) - r sin(phi) cos(2 th) = yf - ay xf^2 / vi^2
// r [ sin(2 th) cos(phi) - sin(phi) cos(2 th) ] = yf - ay xf^2 / vi^2
// sum/difference identity sin(x) cos(y) - sin(y) cos(x) = sin(x - y) :
// r sin(2 th - phi) = yf - ay xf^2 / vi^2
// r = sqrt(xf^2 + yf^2)
// sqrt(xf^2 + yf^2) sin(2 th - phi) = yf - ay xf^2 / vi^2
// tan(phi) = yf / xf phi = arctan(yf / xf):
// sqrt(xf^2 + yf^2) sin(2 th - arctan(yf / xf)) = yf - ay xf^2 / vi^2
// sin(2 th - arctan(yf / xf)) = [yf - ay xf^2 / vi^2] / sqrt(xf^2 + yf^2)
//
// arcsin 1: 2 th - arctan(yf / xf) = arcsin{[yf - ay xf^2 / vi^2] / sqrt(xf^2 + yf^2)} (arcsin1)
//
// and
//
// arcsin 2: 2 th - arctan(yf / xf) = PI - arcsin{[yf - ay xf^2 / vi^2] / sqrt(xf^2 + yf^2)} (arcsin2)
// (arcsin1):
//
// 2 th - arctan(yf / xf) = arcsin{[yf - ay xf^2 / vi^2] / sqrt(xf^2 + yf^2)}
// 2 th = arcsin{[yf - ay xf^2 / vi^2] / sqrt(xf^2 + yf^2)} + arctan(yf / xf)
// th = {arcsin{[yf - ay xf^2 / vi^2] / sqrt(xf^2 + yf^2)} + arctan(yf / xf)} / 2
// (arcsin2):
//
// 2 th - arctan(yf / xf) = PI - arcsin{[yf - ay xf^2 / vi^2] / sqrt(xf^2 + yf^2)}
// 2 th = PI - arcsin{[yf - ay xf^2 / vi^2] / sqrt(xf^2 + yf^2)} + arctan(yf / xf)
// th = [PI - arcsin{[yf - ay xf^2 / vi^2] / sqrt(xf^2 + yf^2)} + arctan(yf / xf)] / 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment