Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
САлта курс2.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
250.88 Кб
Скачать

Нүктелерді, сызықтарды және көпбұрыштарды салу

Нүктенің көлемін анықтау үшін: glPointSize(GLfloat size) процедурасы қолданылады.Нүктенің көлемі пиксельде көрсетіледі. Үнсіз келісім бойынша 1-ге тең. Сызықтың қалыңдығын анықтау үшін: gflineWidth(GLfloatwidth) процедурасы қолданылады. Сызық салынатын шаблонды анықтау үшін glLineStipple(Glint factor, GLushort pattern) процедурасы қолданылады. Процедураның 2 параметрі бар, шаблон 2 параметрмен анықталады және 1 параметрге көрсетілген санға созылады. Шаблонды қолдану үшін қолдануға рұхсат glEnable(GL_UNE_STIPPLE) процедура көмегімен беріледі. Шаблонды қолдануға тиым салу glDisable(GL_LINE_ST1PPLE) командасы арқылы орындалады.

Көпбұрыштарды салу.

Көпбұрыштың 2 жағы бар:

  1. Беттік (лицевая);

  1. Беттік емес (нелицевая);

Көпбұрыштың беттік немесе беттік емес жағын қалай салуын анықтау үшін: glPolygonMode(GLenum face, GLenum mode) процедурасы қолданылады. Оның екі параметрі бар:

  1. Келесі мәндерді қабылдай алады:

GL_FRONT_AND_BACK (обе стороны) – екі жағы,

GL_FRONT (лицевая сторона) - беттік жағы,

GL_BACK (нелицевая сторона) – беттік емес жағы.

  1. Келесі мәндердің біреуін қабылдай алады.

GL_POINT – шекаралық нүктелер жиыны,

GL_LINE – шекаралық сынық сызық,

GL_FILL – толтырылған аймақ.

Үнсіз келісім бойынша экранда сағат бағытына қарсы экранда пайда болатын көпбұрыштың төбелері беттік деп аталады. Бұны glFrontFace(GLenum mode) процедура көмегімен өзгертуге болады. Үнсіз келісім бойынша GL_CCW болады. GL_CW – процедураны осымен қолданса беттік деп сағат бағыты бойынша салынатын көпбұрыштар аталады.

Беттік, беттік емес беттерді салуға тиым салуға болады. Ол үшін: glCullFace(GLenum mode) процедурасы қолданылады. Процедура аргументінің мәндері GL_FRONT тек алдынғы беттер ғана көрінеді. GL_BACK (оставить нелицевые) артқы беттері, GL_FRONT_AND_BACK (оставить все грани) артқы және алдынғы беттері салынады. Бетті толтыру шаблоны GL_POLYGON_STIPPLE роцедура көмегімен орындалады. Сәйкесінше шаблонды қолдануға рұхсат беру үшін: glEnable процедурасы қолданылады.

Әрбір төбе үшін өз нормаль векторын келесі процедураның біреуі мен анықтауға болады.

glNormal3{b s i d f}(TYPE nx, TYPE ny, TYPE nz);

glNormal3{b s I d f}v(const TYPE * v).

b, s ,i - аргументтерінің мәндері [-1, 1] кесіндісіне масштабталады.

OpenGL – де бірнеше көзден шығатын әрқайсысы қосылған немесе өшірілген болатын жарық моделі қолданылады. Сонымен қатар жалпы фондық жарық бар. Обьектілерді дұрыс жарықтандыру үшін обьектінің әрбір беті үшін материалды анықтау қажет. Материал өз жарығын шығару мүмкін. Түскен жарықты барлық бағытта шашырату мүмкін немесе айна сияқты жарықты белгілі уақытта бейнелеуі мүмкін.

Қолданушы 8-ге дейін жарық көздерін, олардың қасиеттерін анықтай алады. Жарық көздерінің қасиеттері. Олар: түс, орналасуы және бағыты. Бұл қасиетті орнату үшін:

gllight{i f}[v](GLenum light, GLenum pname, TYPE param) процедурасы қолданылады. Мұндағы light қабылдайтын мәндері.

GL_LIGHT0, GL_LIGHT1, ..., GL_LIGHT7.

pname параметрі жарық көзінің сипаттамасын анықтайды. Жарық көзін қолдану үшін есептеулер жүргізуге рұхсат glEnable(GL_LGHTING) командасымен беріледі, ал сәйкес жарық көзін қосуға рұхсат glEnable командасымен беріледі. Жалпы фондық жарықты gtLightModel{i f} [v] (GL_LIGHT_MODEL_AMBIENT, ambientColor) командасымен анықталады. Бақылаушының орналасуын обьектідегі биіктерге әсер етеді. Үнсіз келісім бойынша жарық есептеулерінде бақылаушы шексіз алыс нүктеде орналасады деп саналады. Әрбір төбе үшін есептеулерді жеке жүргізу үшін: glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE) бұл шынайы бейне алу үшін қолданылады. Обьектінің алдыңғы және артқы беттерін жарықтандыру үшін: glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE) командасы қолданылады.

3.DELPHI немесе С++ тілі бойынша нүктеде координатаның паралельді жылжыту мен созу-қысуы

object Form1: TForm1

Left = 98

Top = 174

Width = 898

Height = 627

Caption = #1043#1086#1083#1086#1074#1072' '#1087#1072#1088#1072#1084#1077#1090#1088#1080#1079#1080#1088#1086#1074#1072#1085#1085#1072#1103'. '#1042#1077#1088#1089#1080#1103' 1.0'

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'MS Sans Serif'

Font.Style = []

KeyPreview = True

OldCreateOrder = False

OnCreate = FormCreate

OnDestroy = FormDestroy

OnKeyDown = FormKeyDown

OnMouseMove = FormMouseMove

OnResize = FormResize

PixelsPerInch = 96

TextHeight = 13

object Panel1: TPanel

Left = 601

Top = 0

Width = 289

Height = 600

Align = alRight

TabOrder = 0

object Label1: TLabel

Left = 24

Top = 168

Width = 205

Height = 13

Caption = #1055#1088#1072#1074#1072#1103' '#1082#1085#1086#1087#1082#1072' '#1084#1099#1096#1080'- '#1074#1088#1072#1097#1077#1085#1080#1077' '#1089#1094#1077#1085#1099

end

object Label2: TLabel

Left = 24

Top = 184

Width = 183

Height = 13

Caption = #1051#1077#1074#1072#1103' '#1082#1085#1086#1087#1082#1072' '#1084#1099#1096#1080'- '#1074#1099#1073#1086#1088' '#1074#1077#1088#1096#1080#1085

end

object TrackBar1: TTrackBar

Left = 16

Top = 16

Width = 252

Height = 45

Max = 15

Min = -15

TabOrder = 0

OnChange = TrackBar1Change

end

object TrackBar2: TTrackBar

Left = 16

Top = 48

Width = 252

Height = 45

Max = 15

Min = -15

TabOrder = 1

OnChange = TrackBar1Change

end

object TrackBar3: TTrackBar

Left = 16

Top = 80

Width = 252

Height = 45

Max = 15

Min = -15

TabOrder = 2

OnChange = TrackBar1Change

end

object Button1: TButton

Left = 40

Top = 352

Width = 201

Height = 25

Caption = #1057#1073#1088#1086#1089

TabOrder = 3

OnClick = Button1Click

end

end

object Panel4: TPanel

Left = 0

Top = 0

Width = 601

Height = 600

Align = alClient

Caption = 'Panel4'

TabOrder = 1

OnMouseDown = Panel4MouseDown

OnMouseMove = Panel4MouseMove

OnMouseUp = Panel4MouseUp

end

object Timer3: TTimer

Interval = 10

OnTimer = Timer3Timer

Left = 24

Top = 24

end

end