Bitmap/Bézier curves/Quadratic: Difference between revisions
Content deleted Content added
m →{{header|Phix}}: minor tidy |
|||
Line 797: | Line 797: | ||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
Output similar to [[Bitmap/Bézier_curves/Quadratic#Mathematica|Mathematica]] |
Output similar to [[Bitmap/Bézier_curves/Quadratic#Mathematica|Mathematica]]<br> |
||
Requires new_image() from [[Bitmap#Phix|Bitmap]], bresLine() from [[Bitmap/Bresenham's_line_algorithm#Phix|Bresenham's_line_algorithm]], write_ppm() from [[Bitmap/Write_a_PPM_file#Phix|Write_a_PPM_file]]. |
Requires new_image() from [[Bitmap#Phix|Bitmap]], bresLine() from [[Bitmap/Bresenham's_line_algorithm#Phix|Bresenham's_line_algorithm]], and write_ppm() from [[Bitmap/Write_a_PPM_file#Phix|Write_a_PPM_file]]. <br> |
||
Results may be verified with demo\rosetta\viewppm.exw |
|||
<lang Phix>-- demo\rosetta\Bitmap_BezierQuadratic.exw |
|||
⚫ | |||
include ppm.e -- black, green, red, white, new_image(), write_ppm(), bresLine() -- (covers above requirements) |
|||
atom t, t1, a, b, c |
|||
⚫ | |||
⚫ | |||
⚫ | |||
for i=0 to segments*2-1 by 2 do |
for i=0 to segments*2-1 by 2 do |
||
t = i/segments |
atom t = i/segments, |
||
t1 = 1-t |
t1 = 1-t, |
||
a = power(t1,2) |
a = power(t1,2), |
||
b = 2*t*t1 |
b = 2*t*t1, |
||
c = power(t,2) |
c = power(t,2) |
||
pts[i+1] = floor(a*x1+b*x2+c*x3) |
pts[i+1] = floor(a*x1+b*x2+c*x3) |
||
pts[i+2] = floor(a*y1+b*y2+c*y3) |
pts[i+2] = floor(a*y1+b*y2+c*y3) |
||
Line 820: | Line 821: | ||
sequence img = new_image(200,200,black) |
sequence img = new_image(200,200,black) |
||
img = quadratic_bezier(img, 0,100, 100,200, 200,0, white, 40) |
|||
img = bresLine(img,0,100,100,200,green) |
|||
img = bresLine(img,100,200,200,0,green) |
|||
img[1][100] = red |
|||
img[100][200] = red |
|||
img[200][1] = red |
|||
write_ppm("BezierQ.ppm",img)</lang> |
|||
=={{header|PicoLisp}}== |
=={{header|PicoLisp}}== |