2

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

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

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

我正在使用 vpython。

谢谢,

4

3 回答 3

2

最好的方法是进行挤压。使你的形状变成四分之一圆,然后将挤压成整个 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)

不确定这是否完全没有语法错误等,但我认为你理解这背后的想法。四分之一圆从中心旋转,直到它形成一个完整的半球。希望你明白这一点,只是做了这个,但要制作一个完整的球体,并取出一个夹头,就好像一片蛋糕从球体中取出一样。

于 2013-05-03T00:44:43.370 回答
0

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

S1 = shapes.circle(radius=1)

angle = 180  # degrees
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)

您将不得不旋转它,使其失去上半部分而不是侧面。

于 2014-02-01T19:24:55.290 回答
0

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

于 2012-08-21T15:07:22.380 回答