[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]