Перенос баз данных с одного SQL Server на другой Изменения в системе защиты SQL Server Новые средства разработки Новые элементы программирования на языке Visual Basic Редактирование и анализ данных с помощью запросов

Лекции по компьютерной графике начало

2.5.          Алгоритмы построения окружности.

Рассмотрим окружность с центром в начале координат, для которой x2+y2=R2, или в параметрической форме:

1.       x=R× cos(a);

2.       y=R× sin(a).

То есть легко написать программу рисования окружности:

void Circle (int x, int y, int R, int color)
{

int a;
int x1;
int x2;
int y1;
int y2;
x2=x+R;
y2=y;
for ( int a=1; a<=360; a++)
{

x1=x2; y1=y2;
x2=round(R*cos(a))+x;
y2=round(R*sin(a))+x;
Line (x1, y1, x2, y2, color);

}

  }


рис. 2.5.1.

Если воспользоваться симметрией окружности, то можно построить более эффективный алгоритм. Если точка (x, y) лежит на окружности, то легко вычислить семь точек, принадлежащих окружности, симметричных этой. То есть, имея функцию вычисления значения y по x=0..R/SQRT(2) для построения дуги от 00 до 450. Построим процедуру, которая будет по одной координате ставить восемь точек, симметричных центру окружности.

void Circle_Pixel(int x0, int y0, int x, int y, int color);
{

putpixel(x0 + x, y0 + y, color);
putpixel(x0 + y, y0 + x, color);
putpixel(x0 + y, y0 - x, color);
putpixel(x0 + x, y0 - y, color);
putpixel(x0 - x, y0 - y, color);
putpixel(x0 - y, y0 - x, color);
putpixel(x0 - y, y0 + x, color);
putpixel(x0 - x, y0 + y, color);

 }

Таким образом можно написать программу рисование окружности по точкам:

void Circle (int x0, int y0, int R, int color)
{

for ( int x=0; x<=R/sqrt(2); x++)
{

int y = (int)(sqrt(sqr(R)-sqr(x)));
Circle_Pixel (x0, y0, x, y, color);

}

 }

Дизайн, инженерная и Web графика