Mathematica中的3D几何图

Qia*_* Li 3 3d user-interface geometry wolfram-mathematica

平面几何图问题中,我问如何绘制平面几何结构.现在我想将它扩展到3D.不仅那些几何包都做得不好,我在Mathematica中也遇到了很多障碍.

  1. Locator 据我所知,在3d中不可用.

  2. Manipulate 似乎也不适用于3D.

让我举一个具体的例子.我有一个正确的圆锥体,有一个高度h和一个孔径2 theta.它的圆形底座位于水平面上.给定锥形元素,d在该锥体的切平面中绘制一个圆,通过锥形元素.然后绘制该圆的水平直径.谢谢您的帮助.

Sas*_*sha 5

这真的不是那么难.首先,我们定义一个3D圆,由其中心的位置给出,以及两个向量跨越它所在的平面:

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}]]
Run Code Online (Sandbox Code Playgroud)

然后给出一个点{x,y,z}上的锥尖处{0,0,h}的切线{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}]}]}}
  ]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述