Seite 1 von 1

Kreis in einem Mosaik färben

Verfasst: Dienstag 26. April 2011, 22:09
von Toad
Hallo liebe Forenmitglieder ich verzweifel gerade etwas an einer Aufgabe die ich habe.
Ich habe mit tkinter und canvas ein Mosaik das gezeichnet wird am Ende.

Anfangsaufspannung:

Code: Alles auswählen

for row in range(s):
		for col in range(s):
			# calculates the coordinates of the current stone
			x1 = stone_size * row
			y1 = stone_size * col
			x2 = x1 + stone_size
			y2 = y1 + stone_size
			# gets the color of the current stone
			color = decide_color(row, col, s)
			# paints the current stone on the given position
			graphic.create_rectangle(x1, y1, x2, y2, fill = color, outline="")
Innerhalb dieses Mosaiks will ich nun einen Kreis färben mir fehlt allerdings jegliche Idee, wie wenn zB. nur Teile eines Steins betroffen sind, diesen nur teilweise einzufärben.

(Ich möchte keinen Code da ich es ja lernen möchte, ich hoffe nur auf einen kleinen Tipp, da ich schon vieles nachgeschaut hab aber noch nichts gefunden habe das mich weiterbringt)

MfG
ToaD

Re: Kreis in einem Mosaik färben

Verfasst: Dienstag 26. April 2011, 22:13
von Hyperion
Gegenfrage: Was ist denn ein "Stein"? Denk mal darüber nach ;-) Und für das, was einen Stein ausmacht, wird es etwas analoges auch für Kreise geben - denke ich mal. (Unter pygame gibt es das jedenfalls)

Edit: Oder meinst Du eher so was?
Bild

Also dass die Zwischenräume nicht eingefärbt werden?

Re: Kreis in einem Mosaik färben

Verfasst: Dienstag 26. April 2011, 22:17
von Toad
Ein Stein setzt sich hierbei aus der Postionsbestimmung durch Spalte und Reihe zusammen. und besteht aus 4 Punkten, soweit ist mir das klar aber irgendwie krieg ich es nicht abstrahiert :(

Re: Kreis in einem Mosaik färben

Verfasst: Dienstag 26. April 2011, 23:32
von HerrHagen
Wenn ich recht verstehe geht es dir eigentlich nur um folgende Funktion:

Code: Alles auswählen

color = decide_color(row, col, s)
Im Grunde ist die Sache recht einfach. Du musst entscheiden ob der Stein innerhalb des Kreises liegt oder nicht. Anders formuliert: liegt der Stein innerhalb oder außerhalb, des Radius des Kreises. Oder noch anders formuliert: Hat die Position des aktuellen Steines eine größere Distanz zum Mittelpunkt des Kreis als der Radius des Kreises, dann liegt er außerhalb. Ansonsten gehört er zum Kreis. Ich hoffe das hilft.

MFG HerrHagen

Re: Kreis in einem Mosaik färben

Verfasst: Dienstag 26. April 2011, 23:39
von BlackJack
@Toad: Wie HerrHagen schon sagte ist dieser Code für Dich im Grunde gar nicht wirklich interessant. Eben so wenig wie die Annahme Steine könnten nur teilweise betroffen sein. Es sei denn Du willst Antialiasing implementieren.

Re: Kreis in einem Mosaik färben

Verfasst: Mittwoch 27. April 2011, 09:36
von EyDu
Hat jemand "japanische Flagge" gesagt? ^^

Re: Kreis in einem Mosaik färben

Verfasst: Mittwoch 27. April 2011, 12:05
von Leonidas
Japnanische Flagge sagst du? Eigentlich müssts davon ne Re-Edition geben, mit neuen Programmiersprachen.

Re: Kreis in einem Mosaik färben

Verfasst: Mittwoch 27. April 2011, 17:10
von BlackJack
Bis jetzt gibt es dort Lösungen in OCaml, Python, x86-Assembler für Linux und für DOS, Elisp, Scheme, und Io. Sind also noch einige Sprachen "frei". :-)

Re: Kreis in einem Mosaik färben

Verfasst: Donnerstag 28. April 2011, 12:25
von Toad
Habs noch an dem Abend selbst gelöst bekommen:

Code: Alles auswählen

def decide_color_japan(x, y, size):
        Mx = size/2
        My = size/2
        radius = 50

        length = sqrt((Mx-x)*(Mx-x)+(My-y)*(My-y))

        if (length<radius):
                      return "red"
        return "white"
Ist einfach der Punktvergleich ob im Kreis oder nicht

Re: Kreis in einem Mosaik färben

Verfasst: Donnerstag 28. April 2011, 12:32
von Xynon1
Dann solltest du aber nochmal drüber sehen, bei mir ist deine Fahne komplett rot.
Genauer gesagt *ist* die Fahne ein roter Kreis.

Re: Kreis in einem Mosaik färben

Verfasst: Donnerstag 28. April 2011, 13:32
von BlackJack
@Toad: Die feste 50 ist zumindest unschön. Ich würde den Radius auch in Abhängigkeit von `size` ausdrücken. Wenn man mit der Funktion zum Beispiel ein 32×32 Pixel grosses Icon berechnen lassen will, ist die 50 deutlich zu gross.