Научная статья на тему 'ИСПОЛЬЗОВАНИЕ ГРАФИЧЕСКИХ ПРИМИТИВОВ ПРИ ПОСТРОЕНИИ ИЗОБРАЖЕНИЯ'

ИСПОЛЬЗОВАНИЕ ГРАФИЧЕСКИХ ПРИМИТИВОВ ПРИ ПОСТРОЕНИИ ИЗОБРАЖЕНИЯ Текст научной статьи по специальности «СМИ (медиа) и массовые коммуникации»

CC BY
26
4
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГРАФИЧЕСКИЕ ПРИМИТИВЫ / КРИВЫЕ БЕЗЬЕ / GRAPHICAL OUTPUT PRIMITIVES / BESIER CURVES

Аннотация научной статьи по СМИ (медиа) и массовым коммуникациям, автор научной работы — Ананьева Марина Алексеевна

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

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

USE OF GRAPHICAL OUTPUT PRIMITIVES BY IMAGE ACQUISITION

In this article considers image acquisition (clock) with use of graphical output primitives (lines, circles, polygons). For acquisition of curve lines use Besier curves [1]. By image acquisition for acquisition curve lines recommend use Besier curves.

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

ТЕХНИЧЕСКИЕ НАУКИ

ИСПОЛЬЗОВАНИЕ ГРАФИЧЕСКИХ ПРИМИТИВОВ ПРИ

ПОСТРОЕНИИ ИЗОБРАЖЕНИЯ

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

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

г. Москва

USE OF GRAPHICAL OUTPUT PRIMITIVES BY IMAGE ACQUISITION

Ananieva Marina Alekseevna, older teacher of chair application mathematics of Moskow State University information technology, radio-technology and electronics MIREA, MOSCOW АННОТАЦИЯ

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

ABSTRACT

In this article considers image acquisition (clock) with use of graphical output primitives (lines, circles, polygons). For acquisition of curve lines use Besier curves [1]. By image acquisition for acquisition curve lines recommend use Besier curves.

Ключевые слова: графические примитивы, кривые Безье. Keywords: graphical output primitives, Besier curves.

//программа написана на языке программирования C++Builder6

#include <vcl.h>

#pragma hdrstop

#define C_M Canvas->MoveTo

#define C_L Canvas->LineTo

#define C_BC Canvas->Brush->Color

#define C_PC Canvas->Pen->Color

#define C_P_W Canvas->Pen->Width

#define C_F Canvas->FloodFill

#define C_E Canvas->Ellipse

#define C_R Canvas->Rectangle

#define R_B RGB(200,200,200)

#define C_P Canvas->Polygon

#define C_C Canvas->Chord

#define cW clWhite

#define cR clRed

#define cG clGreen

#define cY clYellow

#define cL clLime

#include «Primer_30.h»

//......................................................................

#pragma package(smart_init) #pragma resource «*.dfm» TForm1 *Form1; int mx=30,my=30;

//.....................................

_fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{ }

//-...............................................................

void_fastcall TForm1::FormPaint(TObject *Sender)

{ int x,y;

Color=(TColor)cW;

ShowGrid( );

C_PC=(TColor)0;

TPoint p1[4],p2[5],p3[4],p4[5];

//рисунок

C_PC=(TColor)cG;C_BC=(TColor)cG;

C_E(1.7*mx,3.7*my,12.3*mx,14.3*my);

C_PC=(TColor)RGB(255,138,176);

C_BC=(TColor)RGB(255,138,176);

C_E(1.9*mx,3.9*my,12.1*mx,14.1*my);

C_PC=(TColor)cY;C_BC=(TColor)cY;

C_E(3.5*mx,5.5*my,10.5*mx,12.5*my);

C_PC=(TColor)cL;C_BC=(TColor)cL;

C_E(4.5*mx,11.1*my,9.5*mx,12.7*my);

//гномик

//голова, правая часть

C_PC=(TColor)RGB(252,71,3);

C_BC=(TColor)RGB(252,71,3);

Bezier(7*mx,8.1*my,7.8*mx,7.7*my,7.5*mx,7.8*my);

Bezier(7.8*mx,7.7*my,8.5*mx,7.3*my,8*mx,7.6*my);

Bezier(8.5*mx,7.3*my,8.5*mx,6.5*my,8.7*mx,7*my); Bezier(8.5*mx,6.5*my,7.8*mx,5.6*my,8.2*mx,6.4*my); Bezier(7.8*mx,5.6*my,7*mx,5.4*my,7.5*mx,5.5*my); //голова, левая часть

Bezier(7*mx,5.4*my,6.2*mx,5.6*my,6.5*mx,5.5*my);

Bezier(6.2*mx,5.6*my,5.5*mx,6.5*my,5.8*mx,6*my);

Bezier(5.5*mx,6.5*my,5.5*mx,7.3*my,5.3*mx,7*my);

Bezier(5.5*mx,7.3*my,6.2*mx,7.7*my,6*mx,7.6*my);

Bezier(6.2*mx,7.7*my,7*mx,8.1*my,6.5*mx,7.8*my);

C_F(7*mx,7*my,(TColor)RGB(252,71,3),fsBorder);

//оправа очков

C_PC=(TColor)cW;C_BC=(TColor)cW;

C_E(5.9*mx,6*my,6.9*mx,7*my);

C_E(7.1*mx,6*my,8.1*mx,7*my);

//ремешок

C_P_W=3;

C_M(6.9*mx,6.5*my);C_L(7.1*mx,6.5*my);

Bezier(5.9*mx,6.5*my,5.6*mx,6.4*my,5.8*mx,6.4*my);

Bezier(7.2*mx,6.5*my,8.4*mx,6.4*my,8.2*mx,6.4*my);

C_P_W=1;

//очки

C_PC=(TColor)RGB(112,146,190); C_BC=(TColor)RGB(112,146,190); C_E(6.0*mx,6.1*my,6.8*mx,6.9*my); C_E(7.2*mx,6.1*my,8.0*mx,6.9*my); //нос

C_PC=(TColor)RGB(255,138,176); C_BC=(TColor)RGB(255,138,176); Bezier(7*mx,7.3*my,6.7*mx,7.2*my,6.9*mx,7.4*my); Bezier(6.7*mx,7.2*my,7*mx,7.5*my,6.8*mx,7.4*my); Bezier(7*mx,7.5*my,7.3*mx,7.2*my,7.2*mx,7.4*my); Bezier(7.3*mx,7.2*my,7*mx,7.3*my,7.1*mx,7.4*my); C_F(7*mx,7.4*my,(TColor) RGB(255,138,176),fsBorder); //рот

C_PC=(TColor)cR;C_BC=(TColor)cR;

Bezier(7*mx,7.7*my,6.8*mx,7.6*my,6.9*mx,7.65*my);

Bezier(6.8*mx,7.6*my,7*mx,7.8*my,6.9*mx,7.68*my);

Bezier(7*mx,7.8*my,7.2*mx,7.6*my,7.1*mx,7.68*my);

Bezier(7.2*mx,7.6*my,7*mx,7.7*my,7.1*mx,7.65*my);

C_F(7*mx,7.75*my,cR,fsBorder);

//туловище

C_PC=(TColor)RGB(255,36,4); C_BC=(TColor)RGB(255,36,4); //левая часть

Bezier(7*mx,8.1*my,6.2*mx,7.7*my,6.5*mx,7.8*my); Bezier(6.2*mx,7.7*my,5*mx,8.5*my,5.5*mx,8*my); Bezier(5*mx,8.5*my,4.3*mx,10*my,4.7*mx,9.3*my); Bezier(4.3*mx,10*my,3.9*mx,10.2*my,4.1*mx,10.1* my);

Bezier(3.9*mx,10.2*my,4*mx,10.6*my,3.8*mx,10.3* my);

Bezier(4*mx,10.6*my,4.3*mx,10.5*my,4.1*mx,10.5* my);

Bezier(4.3*mx,10.5*my,4.5*mx,10.9*my,4.2*mx,10.9* my);

Bezier(4.5*mx,10.9*my,4.9*mx,10.5*my,4.7*mx,10.7* my);

Bezier(4.9*mx,10.5*my,6*mx,9.2*my,5.2*mx,9.7*my); Bezier(6*mx,9.2*my,7*mx,10*my,6.5*mx,9.3*my); Bezier(7*mx,10*my,7*mx,8.1*my,7*mx,9*my); C_F(6*mx,8.8*my,(TColor)RGB(255,36,4),fsBorder); //правая часть

Bezier(7*mx,8.1*my,7*mx,10*my,7*mx,9*my);

Bezier(7*mx,10*my,8*mx,9.2*my,8.5*mx,9.3*my); Bezier(8*mx,9.2*my,9.1*mx,10.5*my,8.8*mx,9.7*my); Bezier(9.1*mx,10.5*my,9.5*mx,10.9*my,9.3*mx,10.7* my);

Bezier(9.5*mx,10.9*my,9.7*mx,10.5*my,9.8*mx,10.9* my);

Bezier(9.7*mx,10.5*my,10*mx,10.6*my,9.9*mx,10.5* my);

Bezier(10*mx, 10.6*my, 10.1*mx, 10.2*my, 10.2^, 10.3 *my);

Bezier(10.1*mx,10.2*my,9.7*mx,10*my,9.9*mx,10.1* my);

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

Bezier(9.7*mx,10*my,9*mx,8.5*my,9.3*mx,9.3*my); Bezier(9*mx,8.5*my,7.8*mx,7.7*my,8.5*mx,8*my); Bezier(7.8*mx,7.7*my,7*mx,8.1*my,7.5*mx,7.8*my); C_F(9*mx,9.5*my,(TColor)RGB(255,36,4),fsBorder); //левая нога

C_PC=(TColor)RGB(252,71,3); C_BC=(TColor)RGB(252,71,3); Bezier(7*mx,10*my,6*mx,9.2*my,6.5*mx,9.3*my); Bezier(6*mx,9.2*my,4.9*mx,10.5*my,5.2*mx,9.7*my); Bezier(4.9*mx,10.5*my,4.5*mx,11.1*my,4.7*mx,11* my);

Bezier(4.5*mx,11.1*my,5*mx,11.4*my,4.5*mx,11.5* my);

Bezier(5*mx,11.4*my,6.2*mx,11.1*my,5.7*mx,11.2* my);

Bezier(6.2*mx,11.1*my,7*mx,10*my,6.7*mx,10.6*my); C_F(6*mx,10*my,(TColor)RGB(252,71,3),fsBorder); //правая нога

Bezier(7*mx,10*my,7.8*mx,11.1*my,7.3*mx,10.6*my); Bezier(7.8*mx,11.1*my,9*mx,11.4*my,8.3*mx,11.2* my);

Bezier(9*mx,11.4*my,9.5*mx,11.1*my,9.5*mx,11.5* my);

Bezier(9.5*mx,11.1*my,9.1*mx,10.5*my,9.3*mx,11* my);

Bezier(9.1*mx,10.5*my,8*mx,9.2*my,8.8*mx,9.7*my); Bezier(8*mx,9.2*my,7*mx,10*my,8.5*mx,9.3*my); C_F(8*mx,10*my,(TColor)RGB(252,71,3),fsBorder); // часть тела

C_PC=(TColor)RGB(255,36,4);

C_BC=(TColor)RGB(255,36,4);

Bezier(7*mx,10*my,6.2*mx,11.1*my,6.7*mx,10.6*my);

Bezier(6.2*mx,11.1*my,7.8*mx,11.1*my,7*mx,11*my);

Bezier(7.8*mx,11.1*my,7*mx,10*my,7.3*mx,10.6*my);

C_F(7*mx,10.5*my,(TColor)RGB(255,36,4),fsBorder);

//стрелки

//левая стрелка

C_PC=(TColor)0;C_BC=(TColor)0;

p1[0].x=4.4*mx;p1[0].y=6.7*my;

p1[1].x=3.2*mx;p1[1].y=6.6*my;

p1[2].x=3.8*mx;p1[2].y=7.5*my;

p1[з].x=4.4*mx;p1[з].y=6.7*my;

C_P(p1,3);

p2[0].x=4*mx;p2[0].y=7.3*mx;

p2[1].x=6.7*mx;p2[1].y=9.1*my;

p2[2].x=6.9*mx;p2[2].y=8.7*my;

p2[з].x=4.2*mx;p2[з].y=6.9*my;

p2[4].x=4*mx;p2[4].y=7.3*my;

C_P(p2,4);

//правая стрелка

p3[0].x=10.6*mx;p3[0].y=8.4*my;

pз[1].x=10.6*mx;pз[1].y=9.6*my;

p3[2].x=11.5*mx;p3[2].y=9*my;

p3[3].x=10.6*mx;p3[3].y=8.4*my;

C_P(p3,3);

p4[0].x=7.3*mx;p4[0].y=8.8*my;

p4[1].x=7.3*mx;p4[1].y=9.2*my;

p4[2].x=10.6*mx;p4[2].y=9.2*my;

p4[3].x=10.6*mx;p4[3].y=8.8*my;

p4[4].x=7.3*mx;p4[4].y=8.8*my;

C_P(p4,4);

//люлька

C_PC=(TColor)RGB(22,22,22); C_BC=(TColor)RGB(22,22,22); C_E(6.8*mx,8.7*my,7.4*mx,9.3*my); C_PC=(TColor)0;C_BC=(TColor)0;

//9

C_E(2.4*mx,8.5*my,2.9*mx,9.2*my); C_BC=(TColor)RGB(255,138,176); C_E(2.5*mx,8.6*my,2.8*mx,9.1*my); C_BC=(TColor)0;

C_C(2.4*mx,8.8*my,2.9*mx,9.5*my,2.4*mx,9.3*my,2.9 *mx,9.3*my);

C_PC=(TColor)RGB(255,138,176); C_BC=(TColor)RGB(255,138,176); C_C(2.5*mx,8.7*my,2.8*mx,9.4*my,2.5*mx,9.3*my,2.8 *mx,9.3*my);

C_PC=(TColor)0;C_BC=(TColor)0; C_P_W=3;

C_M(2.8*mx,9.05*my);C_L(2.8*mx,9.3*my); C_P_W=1;

//6

C_E(6.75*mx,13.2*my,7.25*mx,13.9*my); C_BC=(TColor)RGB(255,138,176); C_E(6.85*mx,13.3*my,7.15*mx,13.9*my); C_BC=(TColor)0;

C_C(6.75*mx,12.9*my,7.25*mx,13.6*my,7.25*mx,13.2 *my,6.75*mx,13.2*my);

C_PC=(TColor)RGB(255,138,176); C_BC=(TColor)RGB(255,138,176); C_C(6.85*mx,13*my,7.15*mx,13.5*my,7.15*mx,13.25* my,6.65*mx,13.25*my);

C_PC=(TColor)0;C_BC=(TColor)0;C_P_W=3; C_M(6.8*mx,13.2*my);C_L(6.8*mx,13.4*my);C_P_ W=1; //12 //1

C_P_W=3;

C_M(6.4*mx,4.7*my);C_L(6.7*mx,4.2*my);C_L(6.7*mx ,5.3*my); C_P_W=1;

//2

C_C(7.1*mx,4.2*my,7.6*mx,4.7*my,7.6*mx,4.5*my,7.1 *mx,4.5*my);

C_PC=(TColor)RGB(255,138,176);

C_BC=(TColor)RGB(255,138,176);

C_C(7.2*mx,4.3*my,7.5*mx,4.8*my,7.5*mx,4.8*my,7.1 *mx,4.5*my);

C_PC=(TColor)0;C_BC=(TColor)0;

C_P_W=3;

C_M(7.5*mx,4.5*my);C_L(7*mx,5.3*my);C_L(7.5*mx,5 .3*my);

C_P_W=1;

//3

C_C(11.4*mx,8.6*my,11.9*mx,9*my,11.9*mx,9*my,11.4 *mx,8.8*my);

C_PC=(TColor)RGB(255,138,176);C_BC=(TColor) RGB(255,138,176);

C_C(11.5*mx,8.7*my,11.8*mx,9.1*my,11.8*mx,9.1*my, 11.5*mx,8.8*my);

C_PC=(TColor)0;C_BC=(TColor)0;

C_C(11.4*mx,9*my, 11.9*mx,9.5*my, 11.4*mx,9.3*my,11 .9*mx,9*my);

C_PC=(TColor)RGB(255,138,176);C_BC=(TColor) RGB(255,138,176);

C_C(11.5*mx,9.1*my,11.8*mx,9.4*my,11.5*mx,9.3*my, 11.8*mx,8.9*my);

C_PC=(TColor)0;C_BC=(TColor)0;C_P_W=3;

C_M(11.8*mx,8.9*my);C_L(11.7*mx,9*my);C_L(11.8* mx,9.1*my);

C_P_W=1;}

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

void _fastcall TForm1::Bezier(short StartX, short

StartY, short EndX,

short EndY, short CenterX, short CenterY) {TPoint p[4];

p[0]=Point(StartX,StartY);p[1]=Point(CenterX,Cente rY);

p[2]=Point(EndX,EndY);p[3]=Point(EndX,EndY); Canvas->PolyBezier(p,3);}

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

void_fastcall TForm1::ShowGrid( )

{int x,y;

C_PC=(TColor)R_B; //горизонтальные линии сетки for(y=0;y<=18*my;y+=my) {C_M(0,y);C_L(14*my,y);} //вертикальные линии сетки for(x=0;x<=14*mx;x+=mx)

{C_M(x,0);C_L(x,18*mx);} }

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

Рисунок 1.Часы

Список литературы: 1. Архангельский А.Я. , Тагин М.А. Программирование в C++Builder 6 и 2006.-М.: ООО «Бином-Пресс», 2007г.-1184с.: ил.

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