0

cs1graphics モジュールを使用して、4 つの Point オブジェクトを含む List を作成しました。List オブジェクトの Points を使用して Polygon を描画したいと考えています。これには、反復ごとに (for ループで) List から Polygon パラメータに 1 つの要素を追加します。全体を引き出すには、リスト内の Point オブジェクトを Polygon 内で互いに積み重ねる必要があります。実際に起こることは、リスト内の位置からの Point オブジェクトが、前の反復からの前のオブジェクトをオーバーライドすることです。最終的に、1 つのポイント (つまり、リストの最後のポイント) を「描画」することになります。これを修正するにはどうすればよいですか?

編集: .append を使用してみましたが、すべてのパラメーターが List オブジェクトに変わり、明らかにリストを描画できません。

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
    for i in range(4):
        self._poly = Polygon(self._list[i],)
4

4 に答える 4

0

両方

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
self._poly = Polygon(self._list)

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
self._poly = Polygon(*self._list)

動作します。ループは必要ありません。

 

ループでポリゴンを段階的に構築することを主張する場合は、次のようにすることができます。

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
self._poly = Polygon()
for point in self._list:
    self._poly.addPoint(point)
于 2013-02-02T09:21:03.360 に答える
0

次のように、リスト自体を渡すだけです。

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400)]
self._poly = Polygon(self._list)

最後のポイントは必要ないことに注意してください。

最後のポイントは、ポリゴンを閉じるために最初のポイントに自動的に接続されます。

于 2013-02-02T09:21:13.487 に答える
0

あなたが望むのはこれだと思います:

self._poly = Polygon(*self._list)

*リストを引数にアンパックし、それらを個別の引数として関数に渡します。

ポイント自体のリストを渡すこともできます。

self._poly = Polygon(self._list)

それも同様に機能します。

于 2013-02-02T09:21:50.850 に答える
0

最初の 4 点を持つ Polygon が必要な場合:

self._poly = Polygon(*self._list[:4])

あなたのコードでは、それぞれが単一のポイントを持つ 4 つのポリゴンを作成しています。

于 2013-02-02T09:22:19.310 に答える