【问题标题】:A line intersecting cone in mayavimayavi 中的一条线与圆锥相交
【发布时间】:2021-04-11 14:18:39
【问题描述】:

我是 myavi 的新手,我可以在 mayavi2 程序中打开示例脚本或从 python3 脚本打开 mayavi 场景(我有 kubuntu 18.04)。我做了简单的代码来说明这个问题。通过反复试验的方法,我可以在一个场景中以某种方式显示(双)锥和线。 (也许这是不正确的)。但我不能强迫 mayavi 显示前面和后面的内容。我的意思是无论我选择什么视角,线条似乎总是可见的。我之前遇到过双曲曲面和复杂 3d 轨迹 (plot3d()) 的相同问题。 两个物体可以相互“交流”——交叉点,也许是阴影? 这是我的代码:

#! /usr/bin/env python3
# -*- coding: utf-8 -*- 

import numpy as np
from mayavi import mlab

x, y, z = np.ogrid[-4:4:100j, -4:4:100j, -4:4:100j]
r = 0.5
# cone equation:
F = x**2 + y**2 - r*z**2

mlab.contour3d(F, contours = [0], extent=[-3,3,-3,3,-3,3], opacity=1.0)
mlab.axes()

q = np.linspace(0, 100, 20)
# points forming a line 
x1 = np.linspace(-1, -1.01, 20)
y1 = np.linspace(1, 1.01, 20)
z1 = np.linspace(-3, 3, 20)

mlab.plot3d(x1, y1, z1, q ) 

mlab.show()

【问题讨论】:

    标签: python geometry mayavi


    【解决方案1】:

    我认为您通常无法解决此问题,但这是我用来至少生成数字的方法(在 jupyter 笔记本中)

    import numpy as np
    from tvtk.tools import visual
    from mayavi import mlab
    mlab.init_notebook()
    
    
    x, y, z = np.ogrid[-4:4:100j, -4:4:100j, -4:4:100j]
    r = 0.5
    # cone equation:
    F = x**2 + y**2 - r*z**2
    
    mlab.contour3d(F, contours = [0], extent=[-3,3,-3,3,-3,3], opacity=1.0)
    mlab.axes()
    
    q = np.linspace(0, 100, 20)
    # points forming a line 
    x1 = np.linspace(-1, -1.01, 20)
    y1 = np.linspace(1, 1.01, 20)
    z1 = np.linspace(-3, 3, 20)
    
    mlab.plot3d(x1, y1, z1, q ) 
    
    # mlab.show()
    

    不要使用 mlab.show() 或 view()

    here is your figure corrected

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多