netlib.narod.ru< Назад | Оглавление | Далее >

Картины Безье

Многие, включая самого Безье 1, использовали кривые Безье для создания интересных фигур и узоров. Все подобные шедевры называются «картинами Безье». В этом творчестве нет правил. Единственное: при создании этих рисунков часто используют цикл for. Вот пример:

BezierArt.cs

  //---------------------------------------------
  // BezierArt.cs (C) 2001 by Charles Petzold
  //---------------------------------------------
  using System;
  using System.Drawing;
  using System.Windows.Forms;

  class BezierArt: PrintableForm
  {
      const int iNum = 100;

      public new static void Main()
      {
          Application.Run(new BezierArt());
      }
      public BezierArt()
      {
          Text = "Bezier Art";
      }
      protected override void DoPage(Graphics grfx, Color clr, int cx, int cy)
      {
          Pen      pen  = new Pen(clr);
          PointF[] aptf = new PointF[4];

          for (int i = 0; i < iNum; i++)
          {
              double dAngle = 2 * i * Math.PI / iNum;

              aptf[0].X =     cx / 2 + cx /  2 * (float) Math.Cos(dAngle);
              aptf[0].Y = 5 * cy / 8 + cy / 16 * (float) Math.Sin(dAngle);

              aptf[1] = new PointF(cx / 2,    -cy);
              aptf[2] = new PointF(cx / 2, 2 * cy);

              dAngle += Math.PI;

              aptf[3].X = cx / 2 + cx /  4 * (float) Math.Cos(dAngle);
              aptf[3].Y = cy / 2 + cy / 16 * (float) Math.Sin(dAngle);

              grfx.DrawBeziers(pen, aptf);
          }
      }
  }

Фигуры, нарисованные множеством линий, обычно лучше выглядят на печати, но я рискну показать результат работы этой программы так, как он выглядит на экране:


Рис. 13.11.

Хотя в этой книге лишь черно-белые иллюстрации, что ограничивает мои возможности, не забывайте о цвете в своих картинах Безье.



1 Часть работ Пьера Безье можно увидеть на Web-узле профессора Брайана Барски по адресу http://www.cs.berkeley.edu/~barsky/gifs/bezier.html.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz