Mathematica 中的 3D 几何图

发布于 2024-10-22 07:07:58 字数 456 浏览 1 评论 0原文

平面几何绘图问题中,我问如何绘制平面几何结构。现在我想把它扩展到3D。不仅那些几何包做得不好,我在 Mathematica 中也面临不少障碍。

  1. 据我所知,

    Locator 在 3d 中不可用。

  2. Manipulate 似乎也不适用于 3d。

让我举一个具体的例子。我有一个高度 h 和孔径 2 theta 的直圆锥。它的圆形底座位于水平面上。给定一个圆锥体单元,在该圆锥体经过该圆锥体单元的切平面上画一个直径为 d 的圆。然后画出这个圆的水平直径。感谢您的帮助。

In planar geometry plot question, I asked how to draw planar geometric constructs. Now I want to extend it to 3D. Not only those geometry packages are not doing well, I am also facing quite a few obstacles in Mathematica.

  1. Locator is not usable in 3d, as far as i know.

  2. Manipulate does not seem to work in 3d too.

Let me give a concrete example. I have a right circular cone with a height h and an aperture 2 theta. Its circular base is on the horizontal plane. Given a cone element, draw a circle with a diameter d in the tangent plane to this cone passing the cone element. Then draw the horizontal diameter of this circle. Thank you for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冬天的雪花 2024-10-29 07:07:58

这其实并不难。首先,我们定义一个 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}]]

然后给定圆锥体上的一个点 {x,y,z},其尖端为{0,0,h} 切线为 {x,y,zh}{-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}]}]}}
  ]

在此处输入图像描述

This is really not that hard. First we define a 3D circle, given by a position of its center, and two vectors which span the plane it is in:

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}]]

Then given a point {x,y,z} on a cone with tip at {0,0,h} tangents are {x,y,z-h} and {-y,x,0}. The rest is just drawing:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文