1

タートル グラフィックスを使用して、長方形内に (ベン図のように) 2 つの円を重ねて描画し、ベン図にランダムなドットをプロットする Python プログラムを作成しようとしています。

これは成功しましたが、点が円の 1 つにあるのか、ベン図の交点にあるのかをプログラムに認識させたいと考えています。次に、ドットがどの地域にあるかに応じて、ドットの色を変更したいと思います。

私がプログラムのためにこれまでに行ったことは、変数をリストし、形状を定義し、 for ループを作成してランダムにポイントを生成することです。

4

2 に答える 2

1

turtleは単なるグラフィック ライブラリです。画面に描画したオブジェクトを追跡しません。したがって、特定の点がベン図の円の 1 つ内にあるかどうかを計算するには、次の手順を実行する必要があります。

  1. 呼び出し時に各サークルの座標を保存しますcircle() (クラスは役に立ちますが、まだ学習していない可能性があります)。
  2. ポイントが格納された円座標空間にあるかどうかをテストする関数を呼び出します。これは、デカルト座標に対する純粋な数学的操作になります。@Tim が提供したリンク (ポイントが円の内側にあるかどうかをテストするための方程式) は、これを達成するのに役立ちます。

ステップ 1 に関する簡単なガイダンス:

円を描くとき、​​その中心 (現在のタートルの位置) と半径があります。そこから、その円内のすべてのポイントを取得することは単なるジオメトリです (式を導出できない場合は、クイック検索が役立ちます)。ベン図の円を描く関数と、円内の点を返す関数を作成することをお勧めします。このようなもの:

def venn_circle(circle_color, circle_radius):
    """ Draws a colored circle, returns the points within. """
    turtle.color(circle_color)
    # <fill in: code to move, orient the turtle>
    center = turtle.position()
    # <fill in: code to draw the circle>
    return circle_coords(center, circle_radius)


def circle_coords(center, radius):
    """ Return the set of pixels within the circle. """
    raise NotImplementedError()

そして、1 つの簡単なメモ - 絶対にすべきではありませんfrom package import *。場合によっては問題ありませんが、通常はトラブルにつながるだけです。私のコード例では、このイディオムを に置き換えたと想定していますimport turtle

于 2012-08-21T10:42:53.867 に答える
0

私は非常によく似た課題を持っていたので、簡単な方法で解決しようとしました:

import tkinter
import random

canvas = tkinter.Canvas(width = 300, height = 200, bg = "white")
canvas.pack()

n = 500

for i in range(n):
    x = random.randrange(0, 300)
    y = random.randrange(0, 200)
    bod = canvas.create_oval(x+3, y+3, x-3, y-3, fill = "black")
    if (x - 100)**2+(y - 100)**2 < 80**2:       #for dot in circle1 fill red
        canvas.itemconfig(bod, fill = "red")
    if (x - 180)**2+(y - 100)**2 < 90**2:       #for dot in circle2 fill blue
        canvas.itemconfig(bod, fill = "blue")
    if (x - 100)**2+(y - 100)**2 < 80**2 and (x - 180)**2+(y - 100)**2 < 90**2:
        canvas.itemconfig(bod, fill = "green")  #overlapping of circle1 and 2
于 2017-12-09T22:46:21.693 に答える