Ronan

200 Reputation

6 Badges

6 years, 343 days
East Grinstead, United Kingdom

MaplePrimes Activity


These are questions asked by Ronan

I am experimenting with rotating a group of pionts, lines cylinders etc. the only aminations that  will display are where I put the transformations directly as the point coordinates. This is very tedious. Is there a way around this problem efficiently? Attached worksheet shows problem(s). Ultimately I will have a whole group of objects to rotate.
 

restart

with(plots)

[animate, animate3d, animatecurve, arrow, changecoords, complexplot, complexplot3d, conformal, conformal3d, contourplot, contourplot3d, coordplot, coordplot3d, densityplot, display, dualaxisplot, fieldplot, fieldplot3d, gradplot, gradplot3d, implicitplot, implicitplot3d, inequal, interactive, interactiveparams, intersectplot, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, multiple, odeplot, pareto, plotcompare, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra_supported, polyhedraplot, rootlocus, semilogplot, setcolors, setoptions, setoptions3d, shadebetween, spacecurve, sparsematrixplot, surfdata, textplot, textplot3d, tubeplot]

(1)

with(plottools)

[annulus, arc, arrow, circle, cone, cuboid, curve, cutin, cutout, cylinder, disk, dodecahedron, ellipse, ellipticArc, exportplot, extrude, getdata, hemisphere, hexahedron, homothety, hyperbola, icosahedron, importplot, line, octahedron, parallelepiped, pieslice, point, polygon, prism, project, rectangle, reflect, rotate, scale, sector, semitorus, sphere, stellate, tetrahedron, torus, transform, translate]

(2)

``

``

``

a1 := proc (t) options operator, arrow; display(line([0, 0, 0], [10*sin(t), 0, 0], colour = red), point([10*sin(t), 0, 0], colour = green, symbolsize = 50, symbol = solidsphere), line([0, 0, 0], [0, 10*sin(t+1.6), 0], colour = orange), point([0, 10*sin(t+1.6), 0], colour = green, symbolsize = 40, symbol = solidsphere), line([0, 0, 0], [0, 0, 10*sin(t+.5)^2], colour = yellow), point([0, 0, 10*sin(t+.5)^2], colour = green, symbolsize = 30, symbol = solidsphere)) end proc

animate(a1, [t], t = 0 .. 2*Pi, frames = 100)

 

c1 := Vector(3, [1, -.2, 0]):

c2 := Vector(3, [-1, -.2, 0]):

c3 := Vector(3, [0, 1, 0]):

c4 := Vector(3, [1, -.2, 0]):

c5 := Vector(3, [-1, -.2, 0]):

c6 := Vector(3, [0, 1, 0]):

c7 := Vector(3, [.5, 0, 0]):

c8 := Vector(3, [0, .5, 0]):

c9 := Vector(3, [0, 0, .5]):

c := [seq(c || n, n = 1 .. 9)]

[Vector[column](%id = 18446744074349586662), Vector[column](%id = 18446744074349586782), Vector[column](%id = 18446744074349586902), Vector[column](%id = 18446744074349587022), Vector[column](%id = 18446744074349587142), Vector[column](%id = 18446744074349587382), Vector[column](%id = 18446744074349587502), Vector[column](%id = 18446744074349587622), Vector[column](%id = 18446744074349587742)]

(3)

Rot := Matrix([[cos(w*t), -sin(w*t), 0], [sin(w*t), cos(w*t), 0], [0, 0, 1]])

Matrix(%id = 18446744074349582806)

(4)

d := seq(Rot.c[n], n = 1 .. 9)

Vector[column](%id = 18446744074349577870), Vector[column](%id = 18446744074349577990), Vector[column](%id = 18446744074349578110), Vector[column](%id = 18446744074349578230), Vector[column](%id = 18446744074349578350), Vector[column](%id = 18446744074349578590), Vector[column](%id = 18446744074349578710), Vector[column](%id = 18446744074349578830), Vector[column](%id = 18446744074349578950)

(5)

``

w := .25

.25

(6)

``

``

[d[1][1], d[1][2], d[1][3]]

[cos(.25*t)+.2*sin(.25*t), sin(.25*t)-.2*cos(.25*t), 0.]

(7)

ff1 := proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], [d[1][1], d[1][2], d[1][3]], colour = red, thickness = 4)]) end proc

proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], [d[1][1], d[1][2], d[1][3]], colour = red, thickness = 4)]) end proc

(8)

plots:-animate(ff1, [t], t = 0 .. 5, frames = 100)

 

 

Lend1 := [cos(w*t)+.2*sin(w*t), sin(w*t)-.2*cos(w*t), 0.]

[cos(.25*t)+.2*sin(.25*t), sin(.25*t)-.2*cos(.25*t), 0.]

(9)

ff2 := proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], Lend1, colour = red, thickness = 4)]) end proc

proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], Lend1, colour = red, thickness = 4)]) end proc

(10)

plots:-animate(ff2, [t], t = 0 .. 5, frames = 100)

 

``

ff3 := proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], [cos(.35*t)+.2*sin(.35*t), sin(.35*t)+(-1)*.2*cos(.35*t), 0.], colour = red, thickness = 4)]) end proc

proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], [cos(.35*t)+.2*sin(.35*t), sin(.35*t)-.2*cos(.35*t), 0.], colour = red, thickness = 4)]) end proc

(11)

plots:-animate(ff3, [t], t = 0 .. 5, frames = 100)

 

``


 

Download Anim_How-1.mw

restart

with(plots)

[animate, animate3d, animatecurve, arrow, changecoords, complexplot, complexplot3d, conformal, conformal3d, contourplot, contourplot3d, coordplot, coordplot3d, densityplot, display, dualaxisplot, fieldplot, fieldplot3d, gradplot, gradplot3d, implicitplot, implicitplot3d, inequal, interactive, interactiveparams, intersectplot, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, multiple, odeplot, pareto, plotcompare, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra_supported, polyhedraplot, rootlocus, semilogplot, setcolors, setoptions, setoptions3d, shadebetween, spacecurve, sparsematrixplot, surfdata, textplot, textplot3d, tubeplot]

(1)

with(plottools)

[annulus, arc, arrow, circle, cone, cuboid, curve, cutin, cutout, cylinder, disk, dodecahedron, ellipse, ellipticArc, exportplot, extrude, getdata, hemisphere, hexahedron, homothety, hyperbola, icosahedron, importplot, line, octahedron, parallelepiped, pieslice, point, polygon, prism, project, rectangle, reflect, rotate, scale, sector, semitorus, sphere, stellate, tetrahedron, torus, transform, translate]

(2)

``

``

``

a1 := proc (t) options operator, arrow; display(line([0, 0, 0], [10*sin(t), 0, 0], colour = red), point([10*sin(t), 0, 0], colour = green, symbolsize = 50, symbol = solidsphere), line([0, 0, 0], [0, 10*sin(t+1.6), 0], colour = orange), point([0, 10*sin(t+1.6), 0], colour = green, symbolsize = 40, symbol = solidsphere), line([0, 0, 0], [0, 0, 10*sin(t+.5)^2], colour = yellow), point([0, 0, 10*sin(t+.5)^2], colour = green, symbolsize = 30, symbol = solidsphere)) end proc

animate(a1, [t], t = 0 .. 2*Pi, frames = 100)

 

c1 := Vector(3, [1, -.2, 0]):

c2 := Vector(3, [-1, -.2, 0]):

c3 := Vector(3, [0, 1, 0]):

c4 := Vector(3, [1, -.2, 0]):

c5 := Vector(3, [-1, -.2, 0]):

c6 := Vector(3, [0, 1, 0]):

c7 := Vector(3, [.5, 0, 0]):

c8 := Vector(3, [0, .5, 0]):

c9 := Vector(3, [0, 0, .5]):

c := [seq(c || n, n = 1 .. 9)]

[Vector[column](%id = 18446744074349586662), Vector[column](%id = 18446744074349586782), Vector[column](%id = 18446744074349586902), Vector[column](%id = 18446744074349587022), Vector[column](%id = 18446744074349587142), Vector[column](%id = 18446744074349587382), Vector[column](%id = 18446744074349587502), Vector[column](%id = 18446744074349587622), Vector[column](%id = 18446744074349587742)]

(3)

Rot := Matrix([[cos(w*t), -sin(w*t), 0], [sin(w*t), cos(w*t), 0], [0, 0, 1]])

Matrix(%id = 18446744074349582806)

(4)

d := seq(Rot.c[n], n = 1 .. 9)

Vector[column](%id = 18446744074349577870), Vector[column](%id = 18446744074349577990), Vector[column](%id = 18446744074349578110), Vector[column](%id = 18446744074349578230), Vector[column](%id = 18446744074349578350), Vector[column](%id = 18446744074349578590), Vector[column](%id = 18446744074349578710), Vector[column](%id = 18446744074349578830), Vector[column](%id = 18446744074349578950)

(5)

``

w := .25

.25

(6)

``

``

[d[1][1], d[1][2], d[1][3]]

[cos(.25*t)+.2*sin(.25*t), sin(.25*t)-.2*cos(.25*t), 0.]

(7)

ff1 := proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], [d[1][1], d[1][2], d[1][3]], colour = red, thickness = 4)]) end proc

proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], [d[1][1], d[1][2], d[1][3]], colour = red, thickness = 4)]) end proc

(8)

plots:-animate(ff1, [t], t = 0 .. 5, frames = 100)

 

 

Lend1 := [cos(w*t)+.2*sin(w*t), sin(w*t)-.2*cos(w*t), 0.]

[cos(.25*t)+.2*sin(.25*t), sin(.25*t)-.2*cos(.25*t), 0.]

(9)

ff2 := proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], Lend1, colour = red, thickness = 4)]) end proc

proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], Lend1, colour = red, thickness = 4)]) end proc

(10)

plots:-animate(ff2, [t], t = 0 .. 5, frames = 100)

 

``

ff3 := proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], [cos(.35*t)+.2*sin(.35*t), sin(.35*t)+(-1)*.2*cos(.35*t), 0.], colour = red, thickness = 4)]) end proc

proc (t) options operator, arrow; plots:-display([plottools:-line([0, 0, 0], [cos(.35*t)+.2*sin(.35*t), sin(.35*t)-.2*cos(.35*t), 0.], colour = red, thickness = 4)]) end proc

(11)

plots:-animate(ff3, [t], t = 0 .. 5, frames = 100)

 

``


 

Download Anim_How-1.mw

I am working with Euler's eqns. of motion. So want to animate the solution. I could do a simple set of spheres along the x, y, z axes  that represent the body or use an imported STL file.  Looking for some guidance on how to approech this. I can import an STL ok. How do I give it an xyz set of axes and then rotate/move these in an inertial frame? I have the equations and solutions already. A reasonable example would be adding an STL of a pendulum to http://www.mapleprimes.com/questions/220957-Non-Simple-Harmonic-Pendulum-Motion#answer235955  to Preben's animation response to a recent post  I placed.

 

The first half of this work sheet deals with SHM of pendulum. In the second half of the work sheet I attempt to solve for the general case of a swinging pendulum. Maple introduces a place holder (correct me if I have used the incorrect termonology) " __a" which I do not understand. What variable(s) should I replace it with and is there an automatic way of doing so?
 

restart

NULL

``

``

Simple*Harmonic*Motion*of*a*Pendulum

NULL

Eq1 := diff(Theta(t), t, t) = -omega^2*Theta(t)

diff(diff(Theta(t), t), t) = -omega^2*Theta(t)

(1)

ics := Theta(0) = 0, (D(Theta))(0) = Vmax

Theta(0) = 0, (D(Theta))(0) = Vmax

(2)

SHM := dsolve({Eq1, ics})

Theta(t) = Vmax*sin(omega*t)/omega

(3)

diffSHM := diff(SHM, t)

diff(Theta(t), t) = Vmax*cos(omega*t)

(4)

convert(diffSHM, D)

(D(Theta))(t) = Vmax*cos(omega*t)

(5)

eval[recurse](%, {t = 0, (D(Theta))(0) = Vmax})

Vmax = Vmax

(6)

solve(%, {_C1})

{_C1 = _C1}

(7)

assign(%); _C1

_C1

(8)

``

SHM

Theta(t) = Vmax*sin(omega*t)/omega

(9)

``

(General*Equation*of*Motion*of)*a*Pendulum

restart

diff(Theta(t), t, t) = -omega^2*sin(Theta(t))

diff(diff(Theta(t), t), t) = -omega^2*sin(Theta(t))

(10)

ics := Theta(0) = 0, (D(Theta))(0) = Vmax

Theta(0) = 0, (D(Theta))(0) = Vmax

(11)

Sol := dsolve(diff(Theta(t), t, t) = -omega^2*sin(Theta(t)))

Intat(1/(2*omega^2*cos(_a)+_C1)^(1/2), _a = Theta(t))-t-_C2 = 0, Intat(-1/(2*omega^2*cos(_a)+_C1)^(1/2), _a = Theta(t))-t-_C2 = 0

(12)

Sol[1]

Intat(1/(2*omega^2*cos(_a)+_C1)^(1/2), _a = Theta(t))-t-_C2 = 0

(13)

_C2 := 0

0

(14)

Sol[1]

Intat(1/(2*omega^2*cos(_a)+_C1)^(1/2), _a = Theta(t))-t = 0

(15)

``

dffSol[1] := diff(Sol[1], t)

(diff(Theta(t), t))/(2*omega^2*cos(Theta(t))+_C1)^(1/2)-1 = 0

(16)

``convert(dffSol[1], D)

(D(Theta))(t)/(2*omega^2*cos(Theta(t))+_C1)^(1/2)-1 = 0

(17)

 

eval[recurse](%, {t = 0, Theta(0) = 0, (D(Theta))(0) = Vmax})

Vmax/(2*omega^2+_C1)^(1/2)-1 = 0

(18)

solve(%, {_C1})

{_C1 = Vmax^2-2*omega^2}

(19)

assign(%); 1; _C1

Vmax^2-2*omega^2

(20)

dffSol[1]

(diff(Theta(t), t))/(2*omega^2*cos(Theta(t))+Vmax^2-2*omega^2)^(1/2)-1 = 0

(21)

``

dsolve(dffSol[1]); 1; SOL1 := int((diff(Theta(t), t))/sqrt(2*omega^2*cos(Theta(t))+Vmax^2-2*omega^2)-1, t = 0 .. Theta(t)) = 0

int((diff(Theta(t), t))/(2*omega^2*cos(Theta(t))+Vmax^2-2*omega^2)^(1/2)-1, t = 0 .. Theta(t)) = 0

(22)

Sol[1]

Intat(1/(2*omega^2*cos(_a)+Vmax^2-2*omega^2)^(1/2), _a = Theta(t))-t = 0

(23)

"Using  ( 1-cos(theta))/(2)=sin(theta/(2))^(2)and substituting by hand"

NotsoSHM := Intat(1/(Vmax*sqrt(1-2*omega^2*sin((1/2)*_a)^2/Vmax^2)), _a = (1/2)*Theta(t))-t = 0

Intat(1/(Vmax*(1-2*omega^2*sin((1/2)*_a)^2/Vmax^2)^(1/2)), _a = (1/2)*Theta(t))-t = 0

(24)

``

``


 

Download SHM_and_not_so_SHM.mw

I am practicing with some diff equations. I am having problem solving for one of the constants. I am having a pproblem assigning a value to derivatives or 2nd derivatives. What is a good general technique is this type of situation?
 

restart

NULL

``

omega^2 = g/l

omega^2 = g/l

(1)

Eq1 := diff(Theta(t), t, t) = -omega^2*Theta(t)

diff(diff(Theta(t), t), t) = -omega^2*Theta(t)

(2)

ics := Theta(0) = 0, (diff(Theta(t), t))(0) = Vmax, (diff(Theta(t), t, t))(0) = 0

Theta(0) = 0, (diff(Theta(t), t))(0) = Vmax, (diff(diff(Theta(t), t), t))(0) = 0

(3)

SHM := dsolve({Eq1, ics})

(4)

SHM := dsolve({Eq1})

{Theta(t) = _C1*sin(omega*t)+_C2*cos(omega*t)}

(5)

SHM := dsolve({Eq1, Theta(0) = 0})

Theta(t) = _C1*sin(omega*t)

(6)

``

diffSHM := diff(SHM, t)

diff(Theta(t), t) = _C1*omega*cos(omega*t)

(7)

``

(Theta(t))(0) = 0, (diff(Theta(t), t))(0) = V

(Theta(t))(0) = 0, (diff(Theta(t), t))(0) = V

(8)

``

``

``

``

``

NULL

NULL


 

Download SHM.mw

In the test package below I want the the Value of Clr to be "B" when the package is loaded. How do I achieve that?
 

restart

mylibdir := cat(kernelopts(homedir), kernelopts(dirsep), "maple", kernelopts(dirsep), "toolbox", kernelopts(dirsep), "personal", kernelopts(dirsep), "lib")

"C:\Users\Ronan.Ronan-PC\maple\toolbox\personal\lib"

(1)

``

libname := mylibdir, libname

"C:\Users\Ronan.Ronan-PC\maple\toolbox\personal\lib", "C:\Program Files\Maple 2016\lib", "C:\Users\Ronan.Ronan-PC\maple\toolbox\personal\lib"

(2)

``

``

``

"RTest:=module()  option package;  export  Sums;    global Clr;  Clr:=B;  Sums:=proc(p1,p2,c:=Clr)  if c=B or c=b  then    p1+p2  elif c=G or c=g then  p1-p2  elif c=R or c=r  then      if p2 =0 then "Not Valid"       else ( p1)/(p2)        end if  else "Error"  end if  end proc;    end module; "

_m655171968

(3)

``

savelib('RTest')

restart

``

with(RTest)

[Sums]

(4)

"At This point I want the value of Clr to be automaticially   B"

Sums(2, 3)

"Error"

(5)

RTest:-Sums(2, 3, b)

5

(6)

``

RTest:-Sums(2, 3, r)

2/3

(7)

RTest:-Sums(2, 3, g)

-1

(8)

Clr := g

g

(9)

RTest:-Sums(2, 3)

-1

(10)

RTest:-Sums(2, 3, b)

5

(11)

RTest:-Sums(2, 3)

-1

(12)

RTest:-Sums(2, 0, r)

"Not Valid"

(13)

``


 

Download Module_Test_global_Var.mw

5 6 7 8 9 10 11 Page 7 of 13