Bitmap/Bézier curves/Cubic: Difference between revisions
Content added Content deleted
m (→{{header|C}}: "interface") |
|||
Line 59: | Line 59: | ||
H |
H |
||
</pre> |
</pre> |
||
=={{header| |
=={{header|ALGOL 68}}== |
||
{{trans|Ada}} |
|||
{{works with|ALGOL 68|Standard - '''pragmat''' '''read''' is an extension}} |
|||
{{works with|ALGOL 68G|Any - tested with release mk15-0.8b.fc9.i386}} |
|||
<!-- {{does not work with|ELLA ALGOL 68|Any (with appropriate job cards) - tested with release 1.8.8d.fc9.i386 - '''pragmat''' '''read''' is not part of algol68rs}} --> |
|||
<lang algol>PRAGMAT READ "Bresenhams_line_algorithm.a68" PRAGMAT; |
|||
PROC cubic bezier = |
|||
( REF IMAGE picture, |
|||
POINT p1, p2, p3, p4, |
|||
PIXEL color, |
|||
UNION(INT, VOID) in n |
|||
)VOID: |
|||
BEGIN |
|||
INT n = (in n|(INT n):n|20); # default 20 # |
|||
[0:n]POINT points; |
|||
FOR i FROM LWB points TO UPB points DO |
|||
REAL t = i / n, |
|||
a = (1 - t)**3, |
|||
b = 3 * t * (1 - t)**2, |
|||
c = 3 * t**2 * (1 - t), |
|||
d = t**3; |
|||
x OF points [i] := ENTIER (a * x OF p1 + b * x OF p2 + c * x OF p3 + d * x OF p4); |
|||
y OF points [i] := ENTIER (a * y OF p1 + b * y OF p2 + c * y OF p3 + d * y OF p4) |
|||
OD; |
|||
FOR i FROM LWB points TO UPB points - 1 DO |
|||
line (picture, points (i), points (i + 1), color) |
|||
OD |
|||
END # cubic bezier #; |
|||
# |
|||
The following test |
|||
# |
|||
BEGIN |
|||
REF IMAGE x = INIT LOC[16,16]PIXEL; |
|||
(fill OF class image)(x, (white OF class image)); |
|||
cubic bezier (x, (16, 1), (1, 4), (3, 16), (15, 11), (black OF class image), EMPTY); |
|||
(print OF class image) (x) |
|||
END</lang> |
|||
Output: |
|||
<pre> |
|||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
|||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
|||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
|||
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
|||
ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff |
|||
ffffffffffffffffffffffff000000000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff |
|||
ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff |
|||
ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff |
|||
ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff |
|||
ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff |
|||
ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff |
|||
ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff |
|||
000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff |
|||
000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff |
|||
000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff |
|||
000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
|||
</pre> |
|||
=={{header|C}}== |
|||
"Interface" <tt>imglib.h</tt>. |
"Interface" <tt>imglib.h</tt>. |
||