HP Prime and Numworks: Plotting a Parametric Line of Motion
Plotting the Position of Motion
This program draws a 2D motion plot from an initial starting point (x, y) given initial velocity and acceleration. The rate and direction of both velocity and acceleration are assumed to be constant.
x(t) = ax * t^2 / 2 + vx * t + x0
y(t) = ay * t^2 / 2 + vy * t + y0
where:
t = number of seconds.
ax = acceleration in the x direction
ay = acceleration in the y direction
vx = initial velocity in the x direction
vy = initial velocity in the y direction
The HP Prime PPL program PLOTMOTION displays a traceable curve with a table of values.
The Numworks python script plotmtn.py uses math and matplot.pyplot modules. A scatter plot is laid on top of the path plot. The plot begins at the initial point where it is marked green.
HP Prime Program: PLOTMOTION
EXPORT PLOTMOTION()
BEGIN
// EWS 2024-07-22
LOCAL ch;
ch:=INPUT({C,D,A,B,V,U,N},
"Motion Plot Per Second",
{"x0:","y0:","vx:","vy:","ax:","ay:","n:"},
{"initial x position",
"initial y position",
"initial velocity x direction",
"initial velocity y direction",
"acceleration x direction",
"acceleration y direction",
"number of seconds"});
// user presses cancel
IF ch==0 THEN
KILL;
END;
// user presses OK
STARTAPP("Parametric");
'V*T^2/2+A*T+C'▶X1;
'U*T^2/2+B*T+D'▶Y1;
CHECK(1);
Parametric.Tmin:=0;
Parametric.Tmax:=N;
Parametric.Tstep:=1;
// table and plot
STARTVIEW(10);
STARTVIEW(9);
END;
Numworks Python Code: plotmtn.py
from math import *
from
matplotlib.pyplot import *
# 2024-07-23 EWS
print("Motion
Plot per second from (0,0)")
c=eval(input("init. x
position? "))
d=eval(input("init. y position?
"))
a=eval(input("init. x velocity?
"))
b=eval(input("init. y velocity?
"))
v=eval(input("acceleration x?
"))
u=eval(input("acceleration y?
"))
n=int(input("number of seconds?
"))
x=[v*t**2/2+a*t+c for t in
range(n)]
y=[u*t**2/2+b*t+d for t in
range(n)]
x0=min(x)-1
x1=max(x)+1
y0=min(y)-1
y1=max(y)+1
axis((x0,x1,y0,y1))
text(x0,y1-1,"Motion
Plot")
plot(x,y,'gray')
scatter(x,y,color='blue',marker="h")
scatter(x[0],y[0],color='green',marker="h")
show()
Source
Tremblay, Christopher. Mathematics for Game Developers. Thomson Course Technology. Boston, MA. 2004. ISBN 1-59200-038-X.
Eddie
All original content copyright, © 2011-2024. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.