Group Abstract Group Abstract

Message Boards Message Boards

Plot the solution of numerical equation in 3D on a sphere surface

GROUPS:
I have a problem in making a graph on sphere surface. I get the solution from numerical simulation and it shows the solution is written in interpolation function. let`s say the function is X(t,x,y,z). What I would like to do is to make a graph this function on sphere surface. Please tell me weather it is possible to do that and how.

Thanks.
POSTED BY: Dhisa Minerva
Answer
9 months ago
Yes, it is possible to do this, but it requires some programming.

The answer to this depends on how you want to project the 3D curve onto the 2D surface of the sphere.  Can you explain how you would like the curve projected onto the sphere?

The easiest way to do this is to calculate parameteric function that represents the projection of the curve onto the surface and then to use ParametricPlot3D. Please make sure you are familiar with this function.

If possible, please give a very simple example of your problem and let us know how far you have gotten on solving it.
POSTED BY: Sean Clarke
Answer
9 months ago
As a starting point take a look at this Demonstration:

Lissajous Patterns on a Sphere Surface

The source code is free and you can download it from that link. But it is also rather short so I give it below.




 Manipulate[
  Module[{\[Theta] =
     azf \[Pi]/2 Cos[a t + \[Phi]], \[CurlyPhi] = \[Pi] -
      pof \[Pi] Cos[b t]},
   Show[ParametricPlot3D[{Cos[\[CurlyPhi]] Cos[\[Theta]],
      Cos[\[Theta]] Sin[\[CurlyPhi]], Sin[\[Theta]]}, {t, 0, tmax},
     PlotStyle -> Thickness[thick], ColorFunction -> cofu,
     PerformanceGoal -> "Quality", PlotPoints -> Round[3/7 tmax + 100]],
    Graphics3D[{sphco, Opacity[op], Specularity[.5, 20],
     Sphere[{0, 0, 0}, 1]}], SphericalRegion -> True,
   Background -> bgrco, Boxed -> False, Axes -> False,
   ViewAngle -> .31, ImageSize -> {420, 420}, PlotRange -> 1,
   ViewPoint -> {1.1671864955891427`, -0.6038252372177897`,
     3.1181838892876774`}, BoxRatios -> {1, 1, 1}]],
"curve color",
{{cofu, 52, ""},
  Dynamic[# ->
      Show[ColorData[#, "Image"], ImageSize -> 100] & /@ (ColorData[
       "Indexed"]~Join~ColorData["Gradients"])],
  ControlType -> PopupMenu},
"sphere color",
{{sphco, RGBColor[0., 0.9678, 1.], ""}, GrayLevel[.3],
  ImageSize -> Small},
"background color",
{{bgrco, RGBColor[0.2727, 0., 0.08798], ""}, GrayLevel[.3],
  ImageSize -> Small},
Grid[Transpose[{{"a-factor",
     Control[{{azf, 1, ""}, Range[5]}]},
    {"p-factor",
     Control[{{pof, 1, ""}, Range[5]}]}}]],
"azimuthal frequency",
{{a, 4.01, ""}, 1, 5, Appearance -> "Labeled", ImageSize -> Small},
"polar frequency",
{{b, 3.61, ""}, 1, 5, Appearance -> "Labeled", ImageSize -> Small},
"relative phase",
{{\[Phi], 0, ""}, 0, 2 Pi, Appearance -> "Labeled",
  ImageSize -> Small},
"curve length",
{{tmax, 100, ""}, 0.1, 500, Appearance -> "Labeled",
  ImageSize -> Small},
"curve thickness",
{{thick, .005, ""}, 0, .05, Appearance -> "Labeled",
  ImageSize -> Small},
"sphere opacity",
{{op, 0.31, ""}, 0, 1, Appearance -> "Labeled", ImageSize -> Small},
ControlPlacement -> Left]
POSTED BY: Vitaliy Kaurov
Answer
9 months ago