我在我的程序上绘制了一个球体,如下所示:
ball=sphere(pos=vector(0,0,0),opacity = 0.5,radius=0.95,color=color.black)
有没有办法让它只显示球体的上半部分?
我正在使用 vpython。
谢谢,
最好的方法是进行挤压。使你的形状变成四分之一圆,然后将挤压成整个 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)
不确定这是否完全没有语法错误等,但我认为你理解这背后的想法。四分之一圆从中心旋转,直到它形成一个完整的半球。希望你明白这一点,只是做了这个,但要制作一个完整的球体,并取出一个夹头,就好像一片蛋糕从球体中取出一样。
为了清楚起见,我已经使用挤压来完成此操作,只需要一个 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)
您将不得不旋转它,使其失去上半部分而不是侧面。
你可以做一个黑色的盒子,让它覆盖半个球体,但除此之外,我不知道对不起