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:
Danke noch einmal!
Antworten:
13 für die Antwort № 1Bitte 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[]}]}]
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]
ParametricPlot3D[coords[[All, 2]], {q, 0, Pi}, {f, 0, 2 Pi},
Mesh -> None, TextureCoordinateFunction -> ({#4, 1 - #5} &),
PlotStyle -> Texture[Show[region, ImageSize -> 1000]]]
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]}]