Python和科学计算认证群组  - 讨论区

标题:matplotlib是否可以做出这种效果

2014年08月15日 星期五 16:37

matplotlib是否可以做出这种效果?如果可以,请各位给点提示,谢谢!

2014年08月15日 星期五 17:03

matplotlib不是真正的三维绘图库,这种效果很难做。感觉VPython要容易一点

2014年08月15日 星期五 17:23

谢谢回复,也试过VPython,不过,对VPython没怎么接触过,箭头效果仅仅能做成这样

不知道可否改成像示意图那样的扁平的箭头?

2014年08月15日 星期五 18:32

用extrusion做:

http://vpython.org/contents/docs/extrusion.html

2014年08月15日 星期五 20:06

extrusion如何控制透明度和厚度呢?修改了参数貌似没办法改变厚度,能否给一个箭头的例子,谢谢!

2014年08月15日 星期五 21:54

from visual import *

W = 1.0
L = 3.0
AL = 1.0
AW = 2.0
T = 0.3

    
ex = extrusion(
    pos=[(0, 0, 0), (0, 0, T)],
    shape=Polygon([
        (0, -W*0.5), (0, W*0.5), (L, W*0.5), (L, AW*0.5), 
        (L+AL, 0), (L, -AW*0.5), (L, -W*0.5), (0, -W*0.5)
    ]))

2014年08月15日 星期五 22:12

透明度好像有些麻烦:

from visual import *

W = 1.0
L = 3.0
AL = 1.0
AW = 2.0
T = 0.3

box(color=(1, 0, 0), pos=(0, 0, -2))
box(color=(0, 1, 0), pos=(0, 0, 2))

tex = materials.texture(data=[[(1, 1, 0, 0.6)]],
                     mapping="rectangular",
                     interpolate=False)
    
ex = extrusion(
    material = tex,
    pos=[(0, 0, 0), (0, 0, T)],
    shape=Polygon([
        (0, -W*0.5), (0, W*0.5), (L, W*0.5), (L, AW*0.5), 
        (L+AL, 0), (L, -AW*0.5), (L, -W*0.5), (0, -W*0.5)
    ]))
    
face = ex.create_faces()
#face.make_twosided()

2014年08月18日 星期一 15:16

多谢若愚老师的帮忙,这是制作出来的效果图

不过锯齿现象明显,不知是否有办法解决

2014年08月22日 星期五 19:24

你的显卡没有去锯齿的功能吗?

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2022

    京ICP备05028076号