Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ws1314:gruppe_2 [2014/02/06 14:47] p.kugelstadt |
ws1314:gruppe_2 [2016/05/10 14:46] (aktuell) |
||
---|---|---|---|
Zeile 16: | Zeile 16: | ||
</code> | </code> | ||
Wenn man einen Punkt im array verändert, verändert man seine Farbe: | Wenn man einen Punkt im array verändert, verändert man seine Farbe: | ||
- | <code python>bild[j,i] = (255 , 255 , 255) --> "Schwarz" </code> | + | <code python>bild[j,i] = (255 , 255 , 255) --> "Weiß" </code> |
j entspricht der Zeile, i der Spalte. | j entspricht der Zeile, i der Spalte. | ||
Zeile 68: | Zeile 68: | ||
Konturensuche in eine bestimmte Richtung: | Konturensuche in eine bestimmte Richtung: | ||
- | + | <code python> | |
- | p = [breite,laenge] | + | p = [breite,laenge] |
- | contour.append(p) | + | contour.append(p) |
- | v = [1,0] | + | v = [1,0] |
- | fertig = False | + | fertig = False |
- | while (not fertig): | + | while (not fertig): |
- | if(bild[(p[0]+v[0])] [(p[1]+v[1])]): | + | if(bild[(p[0]+v[0])] [(p[1]+v[1])]): |
- | p1 = [(p[0]+v[0]),(p[1]+v[1])] | + | p1 = [(p[0]+v[0]),(p[1]+v[1])] |
- | contour.append(p1) | + | contour.append(p1) |
- | p = p1 | + | p = p1 |
+ | </code> | ||
Es werden nur die Punkte ein Array eingetragen*seufz* | Es werden nur die Punkte ein Array eingetragen*seufz* | ||
Konturensuche in alle Richtungen: | Konturensuche in alle Richtungen: | ||
<code python>gefunden = False | <code python>gefunden = False | ||
- | for Richtung in range(0,8): | + | if( bild_schwarzweiss[(p[0] + 1)][(p[1]+1)]): |
- | if(Richtung == 0 and bild_schwarzweiss[(p[0] + 1)][(p[1]+1)]): | + | p1 = [(p[0] + 1)][(p[1]+1)] |
- | p1 = [(p[0] + 1)][(p[1]+1)] | + | v = [1][1] |
- | v = [1][1] | + | gefunden = True |
- | gefunden = True | + | contour.append(p1) |
- | contour.append(p1) | + | p = p1 |
- | p = p1 | + | break |
- | break | + | if(bild[(p[0])] [(p[1]+1)]): |
- | if(Richtung == 1 and bild[(p[0])] [(p[1]+1)]): | + | p1 = [(p[0])] [(p[1]+1)] |
- | p1 = [(p[0])] [(p[1]+1)] | + | v = [0][1] |
- | v = [0][1] | + | gefunden = True |
- | gefunden = True | + | contour.append(p1) |
- | contour.append(p1) | + | p = p1 |
- | p = p1 | + | break |
- | break | + | if(bild[(p[0] - 1)][(p[1]+1)]): |
- | if(Richtung == 2 and bild[(p[0] - 1)][(p[1]+1)]): | + | p1 = [(p[0] - 1)][(p[1]+1)] |
- | p1 = [(p[0] - 1)][(p[1]+1)] | + | v = [-1][1] |
- | v = [-1][1] | + | gefunden = True |
- | gefunden = True | + | contour.append(p1) |
- | contour.append(p1) | + | p = p1 |
- | p = p1 | + | break |
- | break | + | if(bild[(p[0] + 1)][(p[1])]): |
- | if(Richtung == 3 and bild[(p[0] + 1)][(p[1])]): | + | p1 = [(p[0] + 1)][(p[1])] |
- | p1 = [(p[0] + 1)][(p[1])] | + | v = [1][0] |
- | v = [1][0] | + | gefunden = True |
- | gefunden = True | + | contour.append(p1) |
- | contour.append(p1) | + | p = p1 |
- | p = p1 | + | break |
- | break | + | if(Richtung == 4 and bild[(p[0] - 1)][(p[1])]): |
- | if(Richtung == 4 and bild[(p[0] - 1)][(p[1])]): | + | p1 = [(p[0] - 1)][(p[1])] |
- | p1 = [(p[0] - 1)][(p[1])] | + | v = [-1][0] |
- | v = [-1][0] | + | gefunden = True |
- | gefunden = True | + | contour.append(p1) |
- | contour.append(p1) | + | p = p1 |
- | p = p1 | + | break |
- | break | + | if(bild[(p[0] + 1)][(p[1] - 1)]): |
- | if(Richtung == 5 and bild[(p[0] + 1)][(p[1] - 1)]): | + | p1 = [(p[0] + 1)][(p[1] - 1)] |
- | p1 = [(p[0] + 1)][(p[1] - 1)] | + | v = [1][-1] |
- | v = [1][-1] | + | gefunden = True |
- | gefunden = True | + | contour.append(p1) |
- | contour.append(p1) | + | p = p1 |
- | p = p1 | + | break |
- | break | + | if(bild[(p[0])] [(p[1]) - 1]): |
- | if(Richtung == 6 and bild[(p[0])] [(p[1]) - 1]): | + | p1 = [(p[0])] [(p[1]) - 1] |
- | p1 = [(p[0])] [(p[1]) - 1] | + | v = [0][-1] |
- | v = [0][-1] | + | gefunden = True |
- | gefunden = True | + | contour.append(p1) |
- | contour.append(p1) | + | p = p1 |
- | p = p1 | + | break |
- | break | + | if(bild[(p[0]-1)] [(p[1] - 1)]): |
- | if(Richtung == 7 and bild[(p[0]-1)] [(p[1] - 1)]): | + | p1 = [(p[0]-1)] [(p[1] - 1)] |
- | p1 = [(p[0]-1)] [(p[1] - 1)] | + | v = [-1][-1] |
- | v = [-1][-1] | + | gefunden = True |
- | gefunden = True | + | contour.append(p1) |
- | contour.append(p1) | + | p = p1 |
- | p = p1 | + | break |
- | break | + | |
</code> | </code> | ||
Wieder wird durch "gefunden" sichergestellt, dass etwas gefunden wurde. Jede Richtung wird untersucht, wird etwas gefunden, gibt es einen Abbruch. | Wieder wird durch "gefunden" sichergestellt, dass etwas gefunden wurde. Jede Richtung wird untersucht, wird etwas gefunden, gibt es einen Abbruch. | ||
die Richtung in die gegangen wurde wird unter der Variable "v" gespeichert. Der neue Punkt ist "p1", der alte Punkt heisst "p". Am Ende wird "p" verändert, damit die Prozedur von neuem beginnen kann. | die Richtung in die gegangen wurde wird unter der Variable "v" gespeichert. Der neue Punkt ist "p1", der alte Punkt heisst "p". Am Ende wird "p" verändert, damit die Prozedur von neuem beginnen kann. | ||
- | + | Hier eine kleine Vereinfachung: | |
- | + | <code python>def Nebenstellen(bild ,v ,p ): | |
+ | gefunden = False | ||
+ | if(bild[(p[0] + v[0])] [(p[1]+v[1])]): | ||
+ | p1 = [(p[0] + v[0]),(p[1]+v[1])] | ||
+ | gefunden = True | ||
+ | p = p1 | ||
+ | if gefunden: | ||
+ | return p, v, gefunden | ||
+ | return False | ||
+ | if Nebenstellen(bild ,[1,1] ,p ): | ||
+ | p, v, gefunden = Nebenstellen(bild ,[1,1] ,p ) | ||
+ | contour.append(p) | ||
+ | if Nebenstellen(bild ,[0,1] ,p ): | ||
+ | p, v, gefunden = Nebenstellen(bild ,[1,1] ,p ) | ||
+ | contour.append(p) | ||
+ | if Nebenstellen(bild ,[-1,1] ,p ): | ||
+ | p, v, gefunden = Nebenstellen(bild ,[1,1] ,p ) | ||
+ | contour.append(p) | ||
+ | if Nebenstellen(bild ,[1,0] ,p ): | ||
+ | p, v, gefunden = Nebenstellen(bild ,[1,1] ,p ) | ||
+ | contour.append(p) | ||
+ | if Nebenstellen(bild ,[0,0] ,p ): | ||
+ | p, v, gefunden = Nebenstellen(bild ,[1,1] ,p ) | ||
+ | contour.append(p) | ||
+ | if Nebenstellen(bild ,[-1,0] ,p ): | ||
+ | p, v, gefunden = Nebenstellen(bild ,[1,1] ,p ) | ||
+ | contour.append(p) | ||
+ | if Nebenstellen(bild ,[1,-1] ,p ): | ||
+ | p, v, gefunden = Nebenstellen(bild ,[1,1] ,p ) | ||
+ | contour.append(p) | ||
+ | if Nebenstellen(bild ,[0,-1] ,p ): | ||
+ | p, v, gefunden = Nebenstellen(bild ,[1,1] ,p ) | ||
+ | contour.append(p) | ||
+ | if Nebenstellen(bild ,[-1,-1] ,p ): | ||
+ | p, v, gefunden = Nebenstellen(bild ,[1,1] ,p ) | ||
+ | contour.append(p) | ||
+ | </code> |