/ / Mathematica RegionPlot auf der Oberfläche der Einheitskugel? - Wolfram-Mathematica, Handlung

Mathematica RegionPlot auf der Oberfläche der Einheitskugel? - Wolfram-Mathematica, Handlung

ich benutze RegionPlot3D in Mathematica, um einige Ungleichungen zu visualisieren. Da die Ungleichungen in den Koordinaten homogen sind, werden sie durch ihren Schnitt mit der Einheitskugel eindeutig bestimmt. Dies ergibt einige zweidimensionale Regionen auf der Oberfläche der Kugel das möchte ich plotten. Meine Frage ist Wie?

Auf Anfrage stelle ich Ihnen gerne einen Mathematica-Code zur Verfügung. obwohl ich glaube, dass die Antwort unabhängig von den Details der Regionen sein sollte, die ich zu zeichnen versuche.

Danke im Voraus!

Aktualisieren: Falls jemand interessiert ist, habe ich kürzlich eine Arbeit fertiggestellt, in der ich Sashas Antwort unten verwendet habe, um einige Zeichnungen zu machen. Die Arbeit ist Symmetrische M-Theorie-Hintergründe und wurde letzte Woche arXived. Es enthält Handlungen wie diese:

F-Modul-Raum für einen symmetrischen Hintergrund der M-Theorie

Danke noch einmal!

Antworten:

13 für die Antwort № 1

Bitte schauen Sie in RegionFunction. Sie können darin Ihre Ungleichungen wörtlich verwenden ParametricPlot3D.

Show[{ParametricPlot3D[{Sin[th] Cos[ph], Sin[th] Sin[ph],
Cos[th]}, {th, 0, Pi}, {ph, 0, 2 Pi},
RegionFunction ->
Function[{x, y, z}, And[x^3 < x y z + z^3, y^2 z < y^3 + x z^2]],
PlotRange -> {-1, 1}, PlotStyle -> Red],
Graphics3D[{Opacity[0.2], Sphere[]}]}]

Bildbeschreibung hier eingeben


12 für die Antwort № 2

Hier ist die einfachste Idee, die ich mir einfallen lassen konnte (danke an belisarius zum ein Teil des Codes).

  • Projizieren Sie die Ungleichungen mit sphärischen Koordinaten auf die Kugel (mit θ = q, φ = f).
  • Zeichnen Sie diese als flaches Regionsdiagramm.
  • Dann zeichnen Sie diese als Textur der Kugel.

Hier sind ein paar homogene Ungleichungen der Ordnung 3

ineq = {x^3 < x y^2, y^2 z > x z^2};

coords = {x -> r Sin[q] Cos[f], y -> r Sin[q] Sin[f], z -> r Cos[q]}/.r -> 1

region = RegionPlot[ineq /. coords, {q, 0, Pi}, {f, 0, 2 Pi},
Frame -> None, ImagePadding -> 0, PlotRangePadding -> 0, ImageMargins -> 0]

flache Region

ParametricPlot3D[coords[[All, 2]], {q, 0, Pi}, {f, 0, 2 Pi},
Mesh -> None, TextureCoordinateFunction -> ({#4, 1 - #5} &),
PlotStyle -> Texture[Show[region, ImageSize -> 1000]]]

Animation


5 für die Antwort № 3

Simon hat mich hart getroffen, aber hier ist eine ähnliche Idee, die auf Grafiken auf niedrigerer Ebene basiert. Ich beschäftige mich mit linearen, homogenen Ungleichungen der Form Ax> 0.

A = RandomReal[{0, 1}, {8, 3}];
eqs = And @@ Thread[
A.{Sin[phi] Cos[th], Sin[phi] Sin[th], Cos[phi]} >
Table[0, {Length[A]}]];
twoDPic = RegionPlot[eqs,
{phi, 0, Pi}, {th, 0, 2 Pi}];
pts2D = twoDPic[[1, 1]];
spherePt[{phi_, th_}] := {Sin[phi] Cos[th], Sin[phi] Sin[th],
Cos[phi]};
rpSphere = Graphics3D[GraphicsComplex[spherePt /@ pts2D,
twoDPic[[1, 2]]]]

Vergleichen wir es mit a RegionPlot3D.

rp3D = RegionPlot3D[And @@ Thread[A.{x, y, z} >
Table[0, {Length[A]}]],
{x, -2, 2}, {y, -2, 2}, {z, -2, 2},
PlotStyle -> Opacity[0.2]];
Show[{rp3D, rpSphere}, PlotRange -> 1.4]

2 für die Antwort № 4
SphericalPlot3D[0.6, {[Phi], 0, [Pi]}, {[Theta], 0, 2 [Pi]},
RegionFunction ->
Function[{x, y, z},
PolyhedronData["Cube", "RegionFunction"][x, y, z]], Mesh -> False,
PlotStyle -> {Orange, Opacity[0.9]}]