Função gluBeginTrim
As funções gluBeginTrim e gluEndTrim delimitam uma definição de loop de corte DE B-Spline Racional Não Uniforme (NURBS).
Sintaxe
void WINAPI gluBeginTrim(
GLUnurbs *nobj
);
Parâmetros
-
nobj
-
O objeto NURBS (criado com gluNewNurbsRenderer).
Retornar valor
Essa função não retorna um valor.
Comentários
Use gluBeginTrim para marcar o início de um loop de corte e gluEndTrim para marcar o final de um loop de corte. Um loop de corte é um conjunto de segmentos de curva orientada (formando uma curva fechada) que definem limites de uma superfície NURBS. Você inclui esses loops de corte na definição de uma superfície NURBS, entre chamadas para gluBeginSurface e gluEndSurface.
A definição de uma superfície NURBS pode conter muitos loops de corte. Por exemplo, se você escrever uma definição para uma superfície NURBS semelhante a um retângulo com um furo furado, a definição conterá dois loops de corte. Um loop definiria a borda externa do retângulo; o outro definiria o buraco furado. As definições de cada um desses loops de corte seriam agrupadas por um par gluBeginTrim / gluEndTrim .
A definição de um único loop de corte fechado pode consistir em vários segmentos de curva, cada um descrito como uma série de segmentos de linha que formam uma curva linear (consulte gluPwlCurve), como uma única curva NURBS (consulte gluNurbsCurve) ou como uma combinação de ambos em qualquer ordem. As únicas chamadas de biblioteca que podem aparecer em uma definição de loop de corte (entre as chamadas para gluBeginTrim e gluEndTrim) são gluPwlCurve e gluNurbsCurve.
A área exibida da superfície NURBS é a região no domínio à esquerda da curva de corte à medida que o parâmetro de curva aumenta. Assim, a região retida da superfície NURBS está dentro de um loop de corte no sentido anti-horário e fora de um loop de corte no sentido horário. Para o retângulo mencionado anteriormente, o loop de corte para a borda externa do retângulo é executado no sentido anti-horário, enquanto o loop de corte para o orifício socado é executado no sentido horário.
Se você usar mais de uma curva para definir um loop de corte único, os segmentos de curva deverão formar um loop fechado (ou seja, o ponto de extremidade de cada curva deve ser o ponto de partida da próxima curva e o ponto de extremidade da curva final deve ser o ponto de partida da primeira curva). Se os pontos de extremidade da curva forem suficientemente próximos, mas não exatamente coincidentes, eles serão forçados a corresponder. Se os pontos de extremidade não estiverem suficientemente próximos, um erro resultará (consulte gluNurbsCallback).
Se uma definição de loop de corte contiver várias curvas, a direção das curvas deverá ser consistente (ou seja, o interior deve estar à esquerda de todas as curvas). Você pode usar loops de corte aninhados, desde que as orientações de curva alternem corretamente. As curvas de corte não podem ser auto-interseccionais, nem podem se cruzar (ou resultados de erro).
Se nenhuma informação de corte for fornecida para uma superfície NURBS, toda a superfície será desenhada.
Exemplos
Esse fragmento de código define um loop de corte que consiste em uma curva linear por peça e duas curvas NURBS:
gluBeginTrim(nobj);
gluPwlCurve(. . ., GLU_MAP1_TRIM_2);
gluNurbsCurve(. . ., GLU_MAP1_TRIM_2);
gluNurbsCurve(. . ., GLU_MAP1_TRIM_3);
gluEndTrim(nobj);
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows 2000 Server [somente aplicativos da área de trabalho] |
Cabeçalho |
|
Biblioteca |
|
DLL |
|