Wolfram mathematica 单位球面上的区域图?

Wolfram mathematica 单位球面上的区域图?,wolfram-mathematica,plot,Wolfram Mathematica,Plot,我正在使用Mathematica中的RegionPlot3D来可视化一些不等式。由于这些不等式在坐标系中是齐次的,它们由它们与单位球面的交点唯一确定。这给出了球面上的一些二维区域,我想画出来。我的问题是怎么做 如果需要,我将非常乐意提供一些Mathematica代码;尽管我相信答案应该独立于我试图绘制的区域的细节 提前谢谢 更新:如果有人感兴趣,我最近完成了一篇论文,在论文中,我使用了萨沙下面的答案来绘制一些情节。这篇论文是上周出版的。它包含这样的绘图: 再次感谢 这是我能想到的最简单的想法(

我正在使用Mathematica中的
RegionPlot3D
来可视化一些不等式。由于这些不等式在坐标系中是齐次的,它们由它们与单位球面的交点唯一确定。这给出了球面上的一些二维区域,我想画出来。我的问题是怎么做

如果需要,我将非常乐意提供一些Mathematica代码;尽管我相信答案应该独立于我试图绘制的区域的细节

提前谢谢

更新:如果有人感兴趣,我最近完成了一篇论文,在论文中,我使用了萨沙下面的答案来绘制一些情节。这篇论文是上周出版的。它包含这样的绘图:


再次感谢

这是我能想到的最简单的想法(感谢你)

  • 使用球坐标(θ=q,φ=f)将不等式投影到球体上
  • 将这些绘制为平面区域图
  • 然后将其绘制为球体的纹理
这里有两个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]

西蒙击败了我,但这里有一个类似的想法,基于较低级别的图形。我处理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]]]]
让我们将其与
区域Plot3D
进行比较

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]
请调查一下。你可以在里面一字不差地使用它

Show[{ParametricPlot3D[{Sin[th]Cos[ph],Sin[th]Sin[ph],
Cos[th]},{th,0,Pi},{ph,0,2pi},
区域功能->
函数[{x,y,z}和[x^3{-1,1},PlotStyle->红色],
Graphics3D[{不透明度[0.2],球体[]}]}]

你好,何塞。欢迎来到stackoverflow,很高兴在这里见到你(并感谢所有漂亮的物理笔记)。非常感谢,西蒙!这个问题的回答速度给我留下了深刻的印象。它几乎和MathOverflow一样快:)@Jose欢迎来到stackoverflow。请记住接受解决问题的答案之一。有一些有用的信息。亲爱的萨莎,谢谢。我参与MathOverflow,对该软件相当熟悉。我倾向于等待一点来接受答案,以确保我接受最好的答案。我只是在玩不同的答案,我最喜欢你的答案,所以我接受了。干杯,José@José:几乎一样快。。。我想我们必须更加努力!我的理由是这里的Mathematica社区仍然很小,我在写我的解决方案时正在观看West Wing(否则我可能会头脑清晰地记住
RegionFunction
)。谢谢。我曾想过投影到平面并使用
RegionPlot
,但不知道如何将其映射回球体。我不知道
纹理
,从名字上我永远也猜不到这就是我要找的+1用于记住关闭帧和打印范围以及图像填充。+1球体透明度和网格确实有助于可视化区域。
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]
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[]}]}]
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]}]