簡體   English   中英

簡單的箭頭mayavi / tvtk在mlab奇怪的行為(看起來像一個bug)

[英]Simple arrow mayavi/tvtk in mlab weird behaviour (looks like a bug)

我試圖在mlab中做一個簡單的箭頭指向圖上的不同區域。 考慮這個例子:

fig = mlab.figure( bgcolor=(0, 0, 0))
b=visual.Box(x=0, y=10, z=10)
visual.set_viewer(fig)
b=visual.Box(x=0, y=10, z=10)
b2=visual.Box(x=10,y=10,z=10, color=(0,0,1))
a=visual.Arrow(x=10,y=10,z=10, color=(1,0,0))

因此,在我看來,箭頭應該出現在藍色框中,然而它仍然存在於它自己的神秘生活中並且完全位於其中。 非常奇怪的是盒子被定位並綁定到網格上(因此,如果我將b放到x = 10,y = 10,z = 10,則兩個盒子將被並置),但箭頭不是。 這就是我所看到的 這是一個錯誤還是一個功能?

更新:

我正在試圖解決上面的問題,並發現箭頭的行為非常奇怪。 這就是我所做的(在ipython進行交互):

from mayavi import mlab
from tvtk.tools import visual
fig=mlab.figure( bgcolor=(0, 0, 0))
visual.set_viewer(fig)

首先將框放在畫布上的某個位置作為參考:

b=visual.Box(x=10,y=4,z=1)

然后我想要一個開箱即用的箭頭:

a=visual.Arrow(x=10,y=4,z=1)

沒有成功(與問題的第一部分相同):

Arrow_error

現在,讓我們毫無理由地改變圓錐的長度

a.length_cone

回報

0.35

讓我們改變它

a.length_cone=0.5

現在,箭頭應該是開箱即用的 Arrow_error

將錐體的長度更改回0.35以查看是否將箭頭更改回錯誤的位置

a.length_cone=0.35

不,箭頭留在它應該的盒子里。 這看起來像一個bug。

玩箭頭,我編寫了以下函數來生成從x1,y1,z1x2,y2,z2的箭頭

def Arrow_From_A_to_B(x1, y1, z1, x2, y2, z2):
    ar1=visual.arrow(x=x1, y=y1, z=z1)
    ar1.length_cone=0.4

    arrow_length=np.sqrt((x2-x1)**2+(y2-y1)**2+(z2-z1)**2)
    ar1.actor.scale=[arrow_length, arrow_length, arrow_length]
    ar1.pos = ar1.pos/arrow_length
    ar1.axis = [x2-x1, y2-y1, z2-z1]
    return ar1

看起來像ArrowSource不允許箭頭延伸超過短距離。 它似乎根本沒用。 mlab函數如quiver3d返回基於PolyDataSource字形。

這將繪制兩個框和它們之間的箭頭。 我不確定是否有一種簡單的方法可以使用quiver3d,它肯定是基於PolyDataSource,但可能不會以某種方式具有相同的結構。

b1=visual.Box()
b2=visual.Box(x=10)
v=mlab.pipeline.vectors(mlab.pipeline.vector_scatter(0,0,0,10,0,0)) #xyzuvw
v.glyph.glyph.clamping=False

此外,您遇到的ArrowSource行為似乎不是一個錯誤,它更像是一個未真正開發的次要功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM