Forum Wiki Galerie Kontakt Wie man Fragen richtig stellt. Tutorial Forum
Zurück   GIMP-Forum 3.0 > Arbeiten mit Gimp > GIMP-Ressourcen > Skripte

Hinweise
Alt 09.09.2016, 09:59   #1
PeterPKHG
Erfahrener Benutzer
 
Registriert seit: 20.07.2016
Beiträge: 468
Standard Bezier-Curven Knoff Hoff! PythonFu!!!

Wer alles über Bezier Kurven wissen will, die Pfade sind nämlich 3de-Orde Bezier Kurven in Gimp, der schaue sich diese WWW-Seite an:

http://pomax.github.io/bezierinfo/#control

Man gehe zu Paragraph " de Casteljau's algorithm "
und schau sich dort das (animierte Bild) "Traversing a curve using Casteljau's algorithm " an!

In Gimp mit Ctrl-N <Return> ein neues Bild erstellen und dann in die PythonFu Konsole öffnen und diesen Kode eingeben:
Code:
"""
function drawCurve(points[], t):
  if(points.length==1):
    draw(points[0])
  else:
    newpoints=array(points.size-1)
    for(i=0; i<newpoints.length; i++):
      newpoints[i] = (1-t) * points[i] + t * points[i+1]
    drawCurve(newpoints, t)
"""

# punkte sind 2-dim Objecte (vectoren!) und die addieren bzw mit einer Zahl multiplizieren!
def add_punkte(p1,p2):
    return [p1[0] + p2[0], p1[1] + p2[1]]

def mul_punkt(punkt, t):
    return [t * punkt[0], t * punkt[1]]

def pointsCasteljau(punkte_liste, t):
    laenge = len(punkte_liste)
    if laenge == 1 :
        print(str(punkte_liste[0]))
        return punkte_liste[0]
    else:
        neue_liste = []
        for i in range(laenge - 1):
            tmp1 = mul_punkt(punkte_liste[i], 1 - t)
            tmp2 = mul_punkt(punkte_liste[i + 1], t)
            neue_liste.append(add_punkte(tmp1,tmp2))
        #print(str(neue_liste))
        return pointsCasteljau(neue_liste, t)

testpunkte = [[0,0], [200,200], [100, 100]]

res = pointsCasteljau(testpunkte, .5)



pt1 = [[90,110],[25,40],[230,40],[150,240]]


ant = 20.0 
res = [pointsCasteljau(pt1, t/ant) for t in range(int(ant)+1)]
for t in range(len(res)):
    pdb.gimp_paintbrush_default(gimp.image_list()[0].layers[0], 2, res[t])
Das sollte dann dies Bild ergeben; meins hat die Hilfslinien und den zugehörigen Pfad !

Klicke auf die Grafik für eine größere Ansicht

Name:	selbst_pad_Castelauo.jpg
Hits:	72
Größe:	47,5 KB
ID:	5687

Was wohl auffällt ist, obwohl die t-Werte gleichmäßig sind, das Ergebnis NICHT gleichmäßig verteilte Punkte zeigt (wird auch drauf hingewiesen!);
aber in in Gimp kann man Punkte 'mit gleichen Abständen' sich berechnen lassen (wie in .... letzter Versuch getan)

Geändert von PeterPKHG (09.09.2016 um 10:09 Uhr)
PeterPKHG ist offline   Mit Zitat antworten
 

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:46 Uhr.


Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.