微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mathematica中的3D几何图

如何解决Mathematica中的3D几何图

| 在平面几何图形问题中,我问如何绘制平面几何结构。现在,我想将其扩展到3D。不仅那些几何软件包效果不佳,而且在Mathematica中我也面临许多障碍。 据我所知,
Locator
在3d中不可用。
Manipulate
在3d中似乎也不起作用。 让我举一个具体的例子。我有一个高度为
h
,孔径为
2 theta
的右圆锥。它的圆形底座在水平面上。给定一个圆锥单元,在通过圆锥单元的该圆锥的切平面上绘制一个直径为
d
的圆。然后画出该圆的水平直径。感谢您的帮助。     

解决方法

这确实并不难。首先,我们定义一个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,1,1/120}]]
然后在锥的尖端上在
{0,h}
处给定点
{x,z}
,切线分别为
{x,z-h}
{-y,x,0}
。其余的只是绘图:
ConeQuestion[h_,theta_,pt : {x_,d_] /; (x^2 + y^2) Cos[theta]^2 == Sin[theta]^2 (z - h)^2 := 
 Module[{tangents},tangents = {Normalize[{0,h} - pt],Normalize[{-y,0}]};
  {{Opacity[0.8,Yellow],Cone[{{0,0},{0,h}},h*Tan[theta]]},{Thick,Dashed,Circle3D[pt,tangents,d]},{Red,Sphere[pt,1/10]},{Orange,Line[{pt - d Normalize[{-y,0}],pt + d Normalize[{-y,0}]}]}}
  ]
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。