0

私は pygame を使用して画面に一連の線を描画しています。次のコードがあります。

points = [list(map(int,elem.split())) if elem.strip().lower() != "j" else [-1, -1, -1] for elem in vlist]

このコードは、xyz 座標を取得し、次の形式でリストに格納します。

[[-1,-1,-1],[366,-1722,583],[366,356,1783],[566,789,1033],[866,-1289,-167],[366,-1722,583],[-1,-1,-1],[-500,-1472,-600],[0,-1039,-600].....]

[-1,-1,-1] に等しい各要素は、描画を停止し、次の点に移動して新しい線を描画し続ける必要がある点を表します。

だから私は線を引く必要があります

[366,-1722,583],[366,356,1783],[566,789,1033],[866,-1289,-167],[366,-1722,583]

次に、描画を停止して新しいポイントに移動し、新しいポイントから描画を開始する必要があります

[-500,-1472,-600],[0,-1039,-600]

ポイントのセットの最後に到達するまで、このように読み続けます

pygame.draw.lineを使用してこれを達成するにはどうすればよいですか

4

2 に答える 2

-1

ポイントの 2D コンポーネントを描画するには、最初に描画する必要がある線のグループを生成し、次にpygame.draw.linesそれらを描画するために使用できます。

from itertools import groupby

# Some itertools magic to split the list into groups with [-1,-1,-1] as the delimiter.
pointLists = [list(group) for k, group in groupby(points, lambda x: x == [-1,-1,-1]) if not k]
color = (255,255,255)
for pointList in pointLists:
    # Only use the x and y components of the points.
    drawPoints = [[l[0], l[1]] for l in pointList]
    # Assume 'screen' is your display surface.
    pygame.draw.lines(screen, color, False, drawPoints)
于 2013-10-22T15:23:06.370 に答える
-1

これを試して

lines = []

for point in points:
    if point == (-1,-1,-1):
        pygame.draw.lines(Surface, color, closed, lines, width=1)
        lines = []
        continue

    lines.append(point)
于 2013-10-22T09:45:33.100 に答える