Emil,
you are already almost there! The only problem is that here NDSolve[]
gives {{p -> InterpolatingFunction[...]}}
, i.e. a list of a list of a rule. If you use such a construct as a replacement rule you get again a list:
a /. {{a -> b}}
(* Out: {b} *)
and so you end up with ParametricPlot3D[{{fx},{fy},{fz}}]
, but this does not work, you want instead
ParametricPlot3D[{fx,fy,fz}]
. So, what you can do is e.g. replacing NDSolve[...]
with NDSolve[...][[1, 1]]
.