Bitmap/Bézier curves/Cubic: Difference between revisions
m
→{{header|Phix}}: minor tidy
m (→{{header|Nim}}) |
m (→{{header|Phix}}: minor tidy) |
||
Line 993:
=={{header|Phix}}==
Output similar to [[Bitmap/Bézier_curves/Cubic#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]]. <br>
<lang Phix>-- demo\rosetta\Bitmap_BezierCubic.exw (runnable version)
<lang Phix>function cubic_bezier(sequence img, atom x1, atom y1, atom x2, atom y2, atom x3, atom y3, atom x4, atom y4, integer colour, integer segments)▼
include ppm.e -- black, green, red, white, new_image(), write_ppm(), bresLine() -- (covers above requirements)
sequence pts = repeat(0,segments*2)▼
▲
▲ sequence pts = repeat(0,segments*2)
for i=0 to segments*2-1 by 2 do
atom t = i/segments,
t1 = 1-t,
a = power(t1,3),
b = 3*t*power(t1,2),
c = 3*power(t,2)*t1,
d = power(t,3)
pts[i+1] = floor(a*x1+b*x2+c*x3+d*x4)
pts[i+2] = floor(a*y1+b*y2+c*y3+d*y4)
Line 1,017 ⟶ 1,018:
sequence img = new_image(300,200,black)
=={{header|PHP}}==
|