Научная статья на тему 'ИСПОЛЬЗОВАНИЕ МЕТОДА СРЕДИННОЙ ТОЧКИ ДЛЯ ПОСТРОЕНИЯ ПАРАВОЛЫ И ГОРИЗОНТАЛЬНОГО ЭЛЛИПСА'

ИСПОЛЬЗОВАНИЕ МЕТОДА СРЕДИННОЙ ТОЧКИ ДЛЯ ПОСТРОЕНИЯ ПАРАВОЛЫ И ГОРИЗОНТАЛЬНОГО ЭЛЛИПСА Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
26
5
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СРЕДИННАЯ ТОЧКА / AVERAGE POINTS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Ананьева Марина Алексеевна

Компьютерной графике рассматриваются растровые алгоритмы. Приводится программа построения параболы и горизонтального эллипса по методу срединной точки. Алгоритм растровой развёртки эллипса описывается в [1]. Для устранения ступенчатости при построении линейных функций (линий), а также конических сечений (окружностей, эллипсов, парабол, гипербол) помимо алгоритма Брезенхема можно воспользоваться методом срединной точки.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

USE OF METHOD AVERAGE POINTS FOR KNOWLEDGE PARABOLA AND COMIC-STRIP ORIENTED ELLIPSE

In computer graphics consider bit-mapped algorithms. Result in program knowledge for parabola and comic-strip oriented ellipse on the methods average points. The algorithm bit-mapped scan ellipse describe in[1]. For removal jagging by construction linear function(line), a also canonical bifurcation (circle, ellipse, parabola, giperbola) apart from algorithm Brezenshema one can use methods average points.

Текст научной работы на тему «ИСПОЛЬЗОВАНИЕ МЕТОДА СРЕДИННОЙ ТОЧКИ ДЛЯ ПОСТРОЕНИЯ ПАРАВОЛЫ И ГОРИЗОНТАЛЬНОГО ЭЛЛИПСА»

ИСПОЛЬЗОВАНИЕ МЕТОДА СРЕДИННОЙ ТОЧКИ ДЛЯ ПОСТРОЕНИЯ ПАРАВОЛЫ

И ГОРИЗОНТАЛЬНОГО ЭЛЛИПСА

Ананьева Марина Алексеевна,

старший преподаватель кафедры прикладной математики, Московский Государственный Университет информационных технологий, радиотехники и электроники МИРЭА, г. Москва

USE OF METHOD AVERAGE POINTS FOR KNOWLEDGE PARABOLA AND COMIC-STRIP ORIENTED ELLIPSE Ananieva Marina Alekseevna, older teacher of chair application mathematics of Moskow State University information technology, radio-technology and electronics, MIREA, MOSCOW АННОТАЦИЯ

В компьютерной графике рассматриваются растровые алгоритмы. Приводится программа построения параболы и горизонтального эллипса по методу срединной точки. Алгоритм растровой развёртки эллипса описывается в [1]. Для устранения ступенчатости при построении линейных функций (линий), а также конических сечений (окружностей, эллипсов, парабол, гипербол) помимо алгоритма Брезенхема можно воспользоваться методом срединной точки. ABSTRACT

In computer graphics consider bit-mapped algorithms. Result in program knowledge for parabola and comic-strip oriented ellipse on the methods average points. The algorithm bit-mapped scan ellipse describe in[1]. For removal jagging by construction linear function(line), a also canonical bifurcation (circle, ellipse, parabola, giperbola) apart from algorithm Brezenshema one can use methods average points. Ключевые слова: срединная точка Keyword: average points

//программа написана на языке программирования C++Builder6 #include <vcl.h> #pragma hdrstop #include<math.h>

#def ne C_P Canvas->Pixels

#def ne C_P_C Canvas->Pen->Color

#def ne C_M Canvas->MoveTo

#def ne C_L Canvas->LineTo

#def ne C_T Canvas->TextOutA

#def ne C_P_W Canvas->Pen->Width

#def ne R_B RGB(200,200,200)

#def ne R_G RGB(125,0,19)

#def ne cW clWhite

#def ne cB clBlack

#include "PP_1.h"

//----

#pragma package(smartjnit) #pragma resource "*.dfm" TForm1 *Form1;

int mx=30,my=30; //----------------------------------------------------------------

_fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner) {

}

//----------------------------------------------------------------

void_fastcall TForm1::ShowGrid(int cenx)

{int x,y;

C_P_C=(TColor)R_B; //горизонтальные линии сетки

for(y=0;y<=15*my;y+=my) {

C_M(0,y);

C_L(20*mx,y); }

//вертикальные линии сетки

for(x=0;x<=20*mx;x+=mx) {

C_M(x,0);

C_L(x,15*my); }

}

//----------------------------------------------------------------------------------------

void_fastcall TForm1::XoY(int cenx, int ceny)

{ //оси //ось X C_P_W=2;

C_M(cenx-8*mx,ceny); C_L(cenx+8*mx,ceny); //стрелка

C_M(cenx+7.5*mx,ceny-0.25*my); C_L(cenx+8*mx,ceny); C_L(cenx+7.5*mx,ceny+0.25*my); C_T(cenx+7.5*mx,ceny-1*my,"X"); //ось Y

C_M(cenx,ceny-8.4*my);

C_L(cenx,ceny+5*my);

//стрелка

C_M(cenx-0.25*mx,ceny-7.9*my); C_L(cenx,ceny-8.4*my); C_L(cenx+0.25*mx,ceny-7.9*my); C_T(cenx+0.5*mx,ceny-8.5*my,"Y");

C_P_W=1; }

//---------------------------------------------------------------------------------------

void_fastcall TForm1::DrawPar(int cenx, int ceny, int ap, int endp)

{

int x=0,y=0; int p,p_2,r,d=0;

C_P[cenx+x][ceny+y]=(TColor)R_G;

p=ap/2.;

p_2=p/2.;

r=endp+p_2;

while (x<=r && y>=0 &y<=endp) {

if (d<0) {

d+=2*x+3;

x++; }

else {

d+=2*x+3-2*p;

x++; y++;

}

C_P[cenx+x][ceny-y]=(TColor)R_G;

C_P[cenx-x][ceny-y]=(TColor)R_G; }

}

//---------------------------------------------------------------------------------------

void_fastcall TForm1::DrawEll(int cenx, int ceny, int a, int b)

{int x,y,a2,b2,a2a,b2b,k; float d,st; a2=a*a;b2=b*b; a2a=2*a2;b2b=2*b2; //часть 7

d=b2+a2*(-b+0.25); x=0;y=b;k=0; while(a2*(y-0.5)>b2*x) {if (d<0)

{d+=b2*(2*x+3);x++;} else

{d+=b2*(2*x+3)+a2a*(1-y);x++;y--;} {

DrawDot(cenx,ceny,x,y);

}

}

//часть 8

d=-a2+b2*(-a+0.25);

x=a;y=0;

st=sqrt(a2+b2);

while((a2*y<=b2*(x-0.5)) && (x>=a2/st) && (y<=b2/st)) {if (d<0)

{d+=a2*(2*y+3);y++;} else

{d+=b2b*(1-x)+a2*(3+2*y);y++;x--;};

DrawDot(cenx,ceny,x,y); }

}

//--------------------------------------------------------------------------------------------------

void_fastcall TForm1::DrawDot(int cenx, int ceny1, int x, int y)

{C_P[cenx+x][ceny1+y]=(TColor)R_G;

C_P[cenx+x][ceny1-y]=(TColor)R_G;

C_P[cenx-x][ceny1+y]=(TColor)R_G;

C_P[cenx-x][ceny1-y]=(TColor)R_G;

//закрашивание

C_P_C=(TColor)R_G;

C_M(cenx+x,ceny1+y);

C_L(cenx+x,ceny1-y);

C_M(cenx-x,ceny1+y);

C_L(cenx-x,ceny1-y);} //----------------------------------------------------------------------------------------------

void_fastcall TForm1::FormPaint(TObject *Sender)

{Color=(TColor)cW;

int xc=10*mx,yc=10*my,yc_1=7*my,a=6*mx,b=my,ap=12*mx,endp=3*my;

ShowGrid(xc);

DrawPar(xc,yc,ap,endp);

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

DrawEll(xc,yc_1,a,b);

C_P_C=(TColor)cB;

XoY(xc,yc);} _

ïijf Метод срединной точки для параболы и горизонт B|S| -£3-

tl Ь Y

\ -V

X

Рисунок 1. Парабола и горизонтальный эллипс

Список литературы

1. Шикин Е.В., Боресков А.В. Компьютерная графика. Полигональные модели. - М.: ДИАЛОГ-МИФИ, 2005.-464с.: ил.

i Надоели баннеры? Вы всегда можете отключить рекламу.