|  |  | 
|  | 
|  | 
|  p.specht
 
 
  | | 
 Windowtitle "Bilineare Bézierkurven"
' (X) Experimentalware 2013-09 by P. Specht, Wien. Keine Gewähr!
Window 0,0-%maxx,%maxy
Appendmenubar 10,"Endpunkte für jeweils 2 Linien klicken. Dazwischen wird dann die Kurve gemalt."
declare x0!,y0!,x1!,y1!,x2!,y2!
declare x!,y!,xa!,ya!,xb!,yb!,xc!,yc!,L!
WaitMouse
x0!=%mousex:y0!=%mousey
usepen 0,2,0
point x0!,y0!
WaitMouse
x1!=%mousex:y1!=%mousey
usepen 0,2,0
point x1!,y1!
usepen 0,1,0
line x0!,y0! - x1!,y1!
repeat
    WaitMouse
    x2!=%mousex:y2!=%mousey
    usepen 0,2,0
    point x2!,y2!
    usepen 0,1,0
    'line x0!,y0! - x2!,y2!
    line x1!,y1! - x2!,y2!
    xa!=(x0!+x1!)/2:ya!=(y0!+y1!)/2
    xb!=x1!:yb!=y1!
    xc!=(x1!+x2!)/2:yc!=(y1!+y2!)/2
    usepen 0,12,rgb(0,200,0)
    moveto xa!,ya!
    whileloop 0,100
        L!=&Loop/100
        ' Bernstein-Polynome:
        x!=(xc!-2*xb!+xa!)*sqr(L!)+2*L!*(xb!-xa!)+xa!
        y!=(yc!-2*yb!+ya!)*sqr(L!)+2*L!*(Yb!-ya!)+ya!
        lineto x!,y!
    endwhile
    x0!=x1!:y0!=y1!
    x1!=x2!:y1!=y2!
until %key=27
end
proc point
    parameters x!,y!
    usepen 0,2,rgb(255,0,0)
    rectangle x!-3,(y!-3) - x!+3,y!+3
endproc
 | 
 | 
|  | 
|  | | XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 09.05.2021  ▲ | 
 | 
|  | 
| 
 
 
 |