Mathematica中的3D几何绘图

3
平面几何绘图问题中,我询问如何绘制平面几何构造。现在我想将其扩展到三维。不仅那些几何包表现不佳,我在Mathematica中也遇到了很多障碍。
  1. 就我所知,Locator在3D中无法使用。

  2. Manipulate在3D中似乎也无法工作。

让我举个具体的例子。我有一个高度为h、孔径为2 theta的直角圆锥。它的圆形底面在水平面上。给定一个圆锥元素,在通过圆锥元素的切平面上画一个直径为d的圆。然后画出这个圆的水平直径。谢谢你的帮助。


1
第一项是正确的:Mathematica不支持3D定位器。Manipulate可以很好地处理三维图形(取决于绘图速度等因素),所以我不知道您在第二项中可能会声称什么。 - Daniel Lichtblau
1
只是一个问题,您希望在二维屏幕上如何使用3D定位器?您可以使用其他控件来移动3D中的某些内容,但不能使用定位器。我建议您浏览演示项目(例如 这个这个),看看有什么东西可用。 - Simon
顺便说一句,我相信你可以使用“Controller*”将类似这个东西连接到Mma。 - Simon
@Simon 但是重新考虑,对于这个问题,这个更合适。http://www.youtube.com/watch?v=R5e1vfaST2I - Dr. belisarius
2
@Simon Mathematica内置支持SpaceNavigator,这是一种3D输入设备。(我从未使用过,但文档中有参考链接 - Brett Champion
显示剩余8条评论
1个回答

5

这并不是很难。首先,我们定义一个三维圆,取决于其中心的位置和两个跨越其所在平面的向量:

Circle3D[{x_, y_, z_}, {v1 : {_, _, _}, v2 : {_, _, _}}, r_] :=
 Line[Table[{x, y, z} + {r Cos[2 Pi t], r Sin[2 Pi t]}.{v1, v2}, {t, 
    0, 1, 1/120}]]

假设在一个顶点为{0,0,h}的圆锥上给定一点{x,y,z},切线分别为{x,y,z-h}{-y,x,0}。其余部分只需要绘制即可:

ConeQuestion[h_, theta_, pt : {x_, y_, z_}, 
   d_] /; (x^2 + y^2) Cos[theta]^2 == Sin[theta]^2 (z - h)^2 := 
 Module[{tangents},
  tangents = {Normalize[{0, 0, h} - pt], Normalize[{-y, x, 0}]};
  {{Opacity[0.8, Yellow], Cone[{{0, 0, 0}, {0, 0, h}}, h*Tan[theta]]},
   {Thick, Dashed, Circle3D[pt, tangents, d]},
   {Red, Sphere[pt, 1/10]},
   {Orange, 
    Line[{pt - d Normalize[{-y, x, 0}], 
      pt + d Normalize[{-y, x, 0}]}]}}
  ]

enter image description here


终于有人回答了。+1! - Mr.Wizard
你能帮忙把圆形涂上颜色吗? - Qiang Li
@Qiang 将 Circle3D 替换为以下内容 Circle3D[{x_, y_, z_}, {v1 : {_, _, _}, v2 : {_, _, _}}, r_] := {EdgeForm[Black], FaceForm[Opacity[0.5, Gray]], Polygon[ Table[{x, y, z} + {r Cos[2 Pi t], r Sin[2 Pi t]}.{v1, v2}, {t, 0, 1, 1/120}]]} - Sasha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接