Exemplo das operações de União e Intersecção entre Esfera e Cubo com CSG

Geometria Sólida Construtiva (ou Constructive Solid Geometry, CSG, em inglês) é uma das técnica para modelagem de sólidos por meio de operações boolianas. O princípio básico implica a construção de um modelo complexo a partir de um conjunto de primitivas recorrendo-se de uma série de operações boolianas sequenciais alternadas ou não, tipicamente a União, Intersecção e a Diferença. A modelagem através do uso de CSG possui inúmeras aplicações, entre elas é claro jogos, estando presente tanto na engine do jogo Unreal, assim como o Editor do Quake.

Técnicas de construção

editar

Existem várias maneiras para modelarmos uma primitivas usando CSG:

SMC

editar

SMC, ou Set Membership Classification, consiste em traçarmos uma série de segmentos paralelos através figura, identificando 3 regiões importantes pertinentes a cada segmento: o conjunto de pontos na fronteira, o conjuntos de pontos dentro da figura e o conjunto de pontos fora da figura. Uma outra alternativa é verificarmos exaustivamente ponto a ponto, os mesmos três conjuntos, também chamado de PMC ou Point Membership Classification, contudo esta técnica embora mais precisa é mais onerosa que a anterior.

Implementação

editar

Exemplo de algoritmo de CSG com SMC em C:

typedef struct arvoreCSG{
	char operacao;
	void *desenho;
	struct arvoreCSG *direita;
	struct arvoreCSG *esquerda;
} TarvoreCSG;

TpilhaSegmentos* combine(TpilhaSegmentos* A, TpilhaSegmentos* B, char op) {}
TpilhaSegmentos* constroiCSG(TarvoreCSG *C, Tponto *P){

	switch((*C).operacao){
   	case 'E': return smc_Esfera(NULL, (Tesfera*)((*C).desenho), P);
	case 'C': return smc_Hexaedro(NULL, (Thexaedro*)((*C).desenho), P);
	default:  return combine( constroiCSG((*C).esquerda, P),
 			constroiCSG((*C).direita, P),
 			(*C).operacao );
	}
}

Ligações externas

editar

A Study of Geometric Set-Membership Classification Tilove, Robert B.

OpenCSG : The CSG rendering library

Ícone de esboço Este artigo sobre computação gráfica é um esboço. Você pode ajudar a Wikipédia expandindo-o.

📚 Artikel Terkait di Wikipedia

Earle Raymond Hedrick

principles of algebra with Alexander Ziwet (New York: Macmillan, 1913) Constructive geometry; exercises in elementary geometric drawing (New York : Macmillan

Padrões na natureza

Peitgen, Heinz-Otto (2005). «Fractal aspects of three-dimensional vascular constructive optimization». In: Losa, Gabriele A.; Nonnenmacher, Theo F. Fractals

Largura de caminho

pp. 574–583 . Bodlaender, Hans L.; Kloks, Ton (1996), «Efficient and constructive algorithms for the pathwidth and treewidth of graphs», Journal of Algorithms