[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]
Program Bezier;
{
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÝÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÞÛÛÛ±±
ÛÛÛÝÛÛ ÛÛÞÛÛÛ±±
ÛÛÛÝÛÛ Bezier curve example ÛÛÞÛÛÛ±±
ÛÛÛÝÛÛ ÛÛÞÛÛÛ±±
ÛÛÛÝÛÛ Aleksandar Dlabac ÛÛÞÛÛÛ±±
ÛÛÛÝÛÛ (C) 1992. Dlabac Bros. Company ÛÛÞÛÛÛ±±
ÛÛÛÝÛÛ ------------------------------ ÛÛÞÛÛÛ±±
ÛÛÛÝÛÛ adlabac@urcpg.urc.cg.ac.yu ÛÛÞÛÛÛ±±
ÛÛÛÝÛÛ adlabac@urcpg.pmf.cg.ac.yu ÛÛÞÛÛÛ±±
ÛÛÛÝÛÛ ÛÛÞÛÛÛ±±
ÛÛÛÝßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÞÛÛÛ±±
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
}
Uses Crt, Graph;
Const Quality = 100; { Greater number - greater quality, slower program }
Points : array [1..4,'X'..'Y'] of integer = { Control points }
((43,123),(345,10),(530,423),(245,345)); { for Bezier curve }
Var Gd, Gm, I : integer;
Function Power (Base:real;Pow:integer) : real;
Var Temp : real;
I : integer;
Begin
Temp:=1;
For I:=1 to Pow do Temp:=Temp*Base;
Power:=Temp
End;
Begin
Gd:=Detect;
InitGraph (Gd,Gm,'');
SetColor (LightRed); {< This part of code }
MoveTo (Points [1,'X'],Points [1,'Y']); {< draws control polygon }
For I:=2 to 4 do {< using control points }
LineTo (Points [I,'X'],Points [I,'Y']); {< in light red color. }
SetColor (Yellow); { Following code draws curve }
MoveTo (Points [1,'X'],Points [1,'Y']);
For I:=0 to Quality do
LineTo (Round (Power (1-I/Quality,3)*Points [1,'X']+3*I/Quality*Power (1-I/Quality,2)*Points [2,'X']+
3*Power (I/Quality,2)*(1-I/Quality)*Points [3,'X']+Power (I/Quality,3)*Points [4,'X']),
Round (Power (1-I/Quality,3)*Points [1,'Y']+3*I/Quality*Power (1-I/Quality,2)*Points [2,'Y']+
3*Power (I/Quality,2)*(1-I/Quality)*Points [3,'Y']+Power (I/Quality,3)*Points [4,'Y']));
Repeat Until ReadKey<>#0;
CloseGraph
End.
[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]