Как да изобразявам кръг в OpenGL

Автор: Eugene Taylor
Дата На Създаване: 12 Август 2021
Дата На Актуализиране: 14 Ноември 2024
Anonim
Как да изобразявам кръг в OpenGL - Електроника
Как да изобразявам кръг в OpenGL - Електроника

Съдържание

OpenGL или Open Graphics Library е графичен API (интерфейс за програмиране на приложения) за писане на 2D и 3D приложения на различни програмни езици и платформи. Може да се използва за изобразяване на всичко, от прости, примитивни обекти до сложни 3D сцени. Open GL се използва широко в компютърния дизайн, научната визуализация, симулацията на полети и видео игрите. Въпреки че OpenGl няма методи за директно изчертаване на кръг, възможно е да се изгради такъв, като се използват поредица от редове. За да нарисувате кръга, ще трябва да имате основни познания по OpenGL.

Етап 1

Направете основна програма с изглед на OpenGL. Ако не сте запознати с този процес, има урок на страницата на OpenGL.


Стъпка 2

Добавете файла math.h.header към вашата програма, като въведете следния код в началото на програмата: #include . Това ще ви предостави функциите cos () и sin () (синус и косинус), необходими за изчисляване на кръга.

Стъпка 3

Стартирайте метода на кръга, като добавите следния код, преди да покажете функцията за обратно извикване:

void drawCircle (GLint x, GLint y, GLint радиус, int num_lines) {}

Променливите "x" и "y" ще бъдат използвани за определяне на центъра на кръга във вашия прозорец, докато "радиусът" определя радиуса на кръга. Цялото число "num_lines" е броят на редовете, използвани за съставяне на кръга. Колкото по-голямо е това число, толкова по-плавен ще се появи кръгът.

Стъпка 4

Добавете следния конфигурационен код вътре в ключовете:

плаващ ъгъл GO int num_lines GO glColor3f (0.0, 0.0, 0.0) GO.

Променливата "ъгъл" ще съдържа ъгъла на линиите, използвани за изграждане на окръжността. Извикването на функцията glColor3f () задава цвета на линиите на черен, където поредицата от три 0 съответства на интензивността на червено, зелено и синьо по скала от 0 до 1.


Стъпка 5

Добавете следния код под функцията glColor3f () от стъпка 4:

glBegin (GL_LINE_LOOP) GO

Това казва на OpenGL, че всички следващи линии включват рисуване на линии. По-конкретно, той ще изчертае „GL_LINE_LOOP“, който представлява поредица от свързани линии.

Стъпка 6

Въведете следния код за цикъл for след извикването glBegin ():

за (int i = 0; i <номер_ред; i ++) {ъгъл = i * 2 * M_PI / num_line; glVertex2f (x + (cos (ъгъл) * радиус), y + (sin (ъгъл) * радиус)); }

Този цикъл прави три неща. Първо, той се итерира според стойността на "num_lines", където num_lines е цяло число, изчертавайки линия във всяка итерация и в резултат на това се получава кръг, съставен от прави линии num_lines. Второ, той изчислява ъгъла на линиите спрямо центъра на окръжността в радиани. "M_P" е константа, дефинирана в math.h, представляваща pi. И накрая, извикването на glVertex2f () изчислява координатите на крайните точки на линиите.


Стъпка 7

След цикъла, въведете следния ред код:

glEnd () GO

Това ще каже на OpenGL, че сте приключили с чертането на линиите.

Стъпка 8

За да нарисувате кръга в сцена, добавете повикване от метода drawCircle () към функцията за показване на обратното повикване на програмата, която трябва да бъде подготвена в стъпка 1. Посочете стойностите на x, y, радиус и num_lines, където x и y представляват точка във вашата сцена радиус е радиусът на кръга, а num_lines е броят на линиите, които съставят кръга. Отново, ако не сте запознати с OpenGL и дисплея за обратно извикване, вижте урока за OpenGL.

Стъпка 9

Компилирайте и стартирайте програмата си. Ако сте въвели функциите правилно, той трябва да се компилира без грешки. Ако сте посочили стойностите за x, y и радиус, трябва да видите черен кръг, показан на бял фон.

Като се има предвид, че доматите узряват отвътре навън, разпознавате зрелия домат, когато външната страна е с наситено червен цвят, малко мека при натискане и плодовете сякаш скачат точно от лозата, к...

Спазматичната и конвулсивна кашлица може да се превърне в много болезнен и дразнещ проблем. Той може да ви попречи да увеличите максимално ежедневното си производство и да попречите на вас и вашите бл...

Очарователно