gluBeginTrim - позначає створення обмежуючого циклу NURBS-площини.

C-специфікація

void gluBeginTrim (GLUnurbs* nurb) ;
void gluEndTrim   (GLUnurbs* nurb) ;

Параметри

nurb вказує об'єкт NURBS-кривої (значення створене за допомогою gluNewNurbsRenderer).

Опис

Використовуйте функцію gluBeginTrim для позначення початку створення обмежуючого циклу і gluEndTrim для позначення закінчення створення обмежуючого циклу. Обмежуючий цикл являється множиною орієнтованих сегментів кривої (які формують закриту криву) яка визначає кордони NURBS-площини. Ви включаєте ці обмежуючі цикли у визначення NURBS-площини, між викликами gluBeginSurface і gluEndSurface.

Визначення NURBS-поверхонь може містити багато обмежуючих циклів. Наприклад, якщо ви напишете визначення для NURBS-поверхні, яка складає прямокутник з отвором, визначення може містити два обмежуючих цикли. Один цикл визначить зовнішні краї прямокутника; інший визначить його отвір. Визначення кожного з цих обмежуючих циклів буде обгорнений парою функцій gluBeginTrim/gluEndTrim.

Визначення одного закритого обмежуючого циклу може складатися з багатьох сегментів кривої, кожен описаний у якості лінійного сегменту кривої (перегляньте gluPwlCurve) або у якості одної NURBS-кривої (перегляньте gluNurbsCurve), або їх комбінацією в будь-якому порядку. Єдиними викликами функцій, які можуть з'являтися у визначенні обмежуючого циклу (між викликами gluBeginTrim і gluEndTrim) являються gluPwlCurve і gluNurbsCurve.

Площа NURBS-поверхні, яка відображається являється регіоном зліва обмежуючої кривої, при збільшенні параметрів кривої. Тобто, весь регіон NURBS-поверхні міститься в середині обмежуючого циклу, який вказаний проти годинникової стрілки і ззовні обмежуючого циклу, який вказаний у напрямі годинникової стрілки. Для прямокутника згаданого раніше, обмежуючий цикл для зовнішнього краю прямокутника йде у напряму проти годинникової стрілки, поки обмежуючий цикл для отвору вказується за годинниковою стрілкою.

Якщо ви використовуєте більш ніж одну криву для визначення одного обмежуючого циклу, сегменти кривої повинні формувати закритий цикл (тобто, кінцева точка кожної кривої повинна бути початковою точкою наступної кривої, і кінцева точка кінцевої кривої повинна бути початковою точкою першої кривої). Якщо кінцеві точки кривої містяться достатньо близько, але не збігаються, вони будуть скореговані. Якщо кінцеві точки не містяться достатньо близько, це спричиняє генерування помилки (перегляньте gluNurbsCallback).

Якщо визначення обмежуючою циклу містить множину кривих, напрямок кривих повинен співпадати (тобто, внутрішня частина повинна розміщуватися по ліву сторону усіх кривих). Дозволені вкладені обмежуючі цикли до поки орієнтація кривих є коректними. Якщо обмежуючі криві самопересікаються, або пересікають одна-одну, це спричинює помилку.

Якщо жодна обмежуюча інформація надається для NURBS-кривої, малюється уся площина.

Приклад

Даний фрагмент коду визначає обмежуючий цикл, який складається з одного лінійного сегменту кривої, і дві NURBS-криві:

gluBeginTrim (nobj) ;
   gluPwlCurve (..., GLU_MAP1_TRIM_2) ;
   gluNurbsCurve (..., GLU_MAP1_TRIM_2) ;
   gluNurbsCurve (..., GLU_MAP1_TRIM_3) ;
gluEndTrim (nobj) ;

 

Перегляньте також

gluBeginSurface, gluNewNurbsRenderer, gluNurbsCallback, gluNurbsCurve, gluPwlCurve

Оригінал

https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluBeginTrim.xml