Bitmap/Bézier curves/Quadratic: Difference between revisions
Content added Content deleted
(Go solution) |
(Added PicoLisp) |
||
Line 324: | Line 324: | ||
by_pair pts (fun p0 p1 -> line ~p0 ~p1); |
by_pair pts (fun p0 p1 -> line ~p0 ~p1); |
||
;;</lang> |
;;</lang> |
||
=={{header|PicoLisp}}== |
|||
This uses the 'brez' line drawing function from |
|||
[[Bitmap/Bresenham's line algorithm#PicoLisp]]. |
|||
<lang PicoLisp>(scl 6) |
|||
(de quadBezier (Img N X1 Y1 X2 Y2 X3 Y3) |
|||
(let (R (* N N) X X1 Y Y1 DX 0 DY 0) |
|||
(for I N |
|||
(let (J (- N I) A (*/ 1.0 J J R) B (*/ 2.0 I J R) C (*/ 1.0 I I R)) |
|||
(brez Img X Y |
|||
(setq DX (- (+ (*/ A X1 1.0) (*/ B X2 1.0) (*/ C X3 1.0)) X)) |
|||
(setq DY (- (+ (*/ A Y1 1.0) (*/ B Y2 1.0) (*/ C Y3 1.0)) Y)) ) |
|||
(inc 'X DX) |
|||
(inc 'Y DY) ) ) ) )</lang> |
|||
Test: |
|||
<lang PicoLisp>(let Img (make (do 200 (link (need 300 0)))) # Create image 300 x 200 |
|||
(quadBezier Img 12 20 100 300 -80 260 180) |
|||
(out "img.pbm" # Write to bitmap file |
|||
(prinl "P1") |
|||
(prinl 300 " " 200) |
|||
(mapc prinl Img) ) ) |
|||
(call 'display "img.pbm")</lang> |
|||
=={{header|PureBasic}}== |
=={{header|PureBasic}}== |