2

私は自分のプログラムに球を次のようにプロットしています:

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

球の上半分だけを表示する方法はありますか?

私はvpythonを使用しています。

ありがとうございました、

4

3 に答える 3

2

これを行う最善の方法は、押し出しを作成することです。シェイプを円の 4 分の 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)

これが完全に構文エラーがないかどうかなどはわかりませんが、この背後にある考え方を理解していると思います. 完全な半球になるまで、円の 4 分の 1 を中心から回転させます。アイデアが得られることを願っていますが、これを行ったのは、まるでケーキのスライスが球から外れているかのように、チャックを取り出して完全な球を作るためです。

于 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 に答える