Vpython绘制半球

时间:2012-06-12 21:51:27

标签: python 3d shapes vpython

我的程序上绘制了一个球体,如下所示:

ball=sphere(pos=vector(0,0,0),opacity = 0.5,radius=0.95,color=color.black)

有没有办法让它只显示球体的上半部分?

我正在使用vpython。

谢谢,

3 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是进行挤出。使你的形状为圆的四分之一,然后将整个60度的挤压成弧形。如果您看到挤出示例,他们对此有很多帮助,vpython的纪录片也是如此。

例如:

    circle = shapes.circle(radius=20) #you can use the size of your choice
    square1 = Polygon[(-10,-20),(-10,20),(0,20),(0,-20)]
    square2 = Polygon[(0,0),(0,20),(20,20),(20,0)]

    rotation = paths.arc(radius=20, angle2=pi)

    Hemisphere = extrusion(pos=rotation,shape=circle-square1-square2)

不确定这是否完全没有语法错误等,但我认为您理解这背后的想法。圆的四分之一从中心旋转直到它形成一个完整的半球。希望你能得到这个想法,只是做了这个,但是要制作一个带有夹头的整个球体,好像一片蛋糕已经离开球体。

答案 1 :(得分:0)

你可以制作一个黑色的盒子,让它覆盖半个球体,但除此之外,我不知道对不起

答案 2 :(得分:0)

为了清楚我已经使用挤压做到了这一点,只需要一个3/4的球体。通过调用circle然后在圆的一半上减去一个正方形来制作半个cirlce形状。在此之后使你的旋转等于1pi(半圈),这里是如何做到的:

    S1 = shapes.circle(radius=1)

    angle = 180 #degrees
    angle = angle=angle*(pi/180) #convert to radians (1pi)

    sq = Polygon([(-10,-20),(-10,20),(0,20),(0,-20)])
    semicircle = paths.arc(radius=0.000000001, angle1=pi/2, angle2=2.2*pi)

    mf = frame()
    Layer20_Extrusion = extrusion(frame=mf,pos=semicircle, shape=S1-sq,color=wh)

    mf.rotate(angle=angle)
    mf.pos=(0,0,0)

你必须旋转它,使其上半部分缺失而不是侧面,

有一段时间没有使用这段代码,所以我不知道为什么半径= 0.0000000001 ish但是我觉得你应该能够弄清楚我做了什么,对不起代码的迟到回复,当你发布这个问题我试图解决同样的问题。