Sei sulla pagina 1di 6

> UNIVERSIDADE DO ESTADO DE SANTA CATARINA - MOG <

Aplicao de Varredura para a Criao de Slidos (Julho 2012)


Rafael Alceste Berri

Resumo Este artigo faz uma reviso literria sobre o processo de varredura. Como forma de se testar e implementar alguns dos fundamentos apresentados neste artigo, desenvolveu-se um programa para Varredura Rotacional. No desenvolvimento foi utilizado a linguagem de programao C++ com a biblioteca grfica OpenGL. ainda apresentado um algoritmo de Varredura Rotacional e um prottipo de criao de slido usando estrutura de dados AIF utilizados no desenvolvimento do software. Palavras chaves Verredura, Modelagem de Slido, CAD, CAM, AIF.

capacidade de descrio contida no perfil gerador. Por esse motivo, interessante combinar vrias linhas e arcos na construo do perfil, permitir a construo de perfis compostos por mais de um contorno [2]. Em termos matemticos a operao de varredura mostra-se mais complexa do que parece primeira vista [2].

I. INTRODUO arredura uma importante facilidade que est disponvel em muitos modeladores [1]. Alm de ampliar seu potencial descritivo, ela fornece uma boa forma de descrever a fronteira de objetos. Est presente tambm em alguns algoritmos de simulao para mquinas CNC (Computer Numerically Control) feitas por software de CAM (Computeraided Manufacturing), com eles se pode verificar erros e melhorar o processo produtivo. Este artigo aborda uma reviso bibliogrfica sobre varredura e apresenta conceitos que se tornam necessrio na criao de um software de criao de slidos com base na Varredura Rotacional. II. VARREDURA A representao por varredura baseada na ideia de se mover uma curva, superfcie ou solido ao longo de um caminho [6]. Baseia-se ento na noo de mover uma regio, denominada gerador, por uma trajetria, denominada diretor, utilizando duas formas bsicas: a translacional (conhecida por sweeping) e a rotacional (conhecida por swinging), que podem ser combinadas com o escalamento [2]. O resultado do processo de varredura a definio de um novo objeto de duas ou trs dimenses. A varredura necessita de pouca informao para gerar e definir um slido ou forma [6]. A qualidade da varredura est muito relacionada

(1) Degenerao (2) Vista Interior Fig. 1 Exemplo de degenerao ocasionada pela Varredura Translacional. Fonte: [2]

Pode-se observar alguns problemas relacionados autointerseo [7], ou a varredura por um caminho paralelo ao elemento gerador, que resultar em uma rea, ao invs de um volume [2]. Na Figura 1 mostrado um exemplo do problema da auto-interseo. Nas subsees seguintes so abordadas questes pertinentes a Varredura Rotacional, Varredura Translacional e uma Aplicao de Varredura para Corte de Superfcie. A. Varredura Rotacional A varredura rotacional ocorre em torno de um eixo coplanar e externo ao perfil ou polgono gerador [1][2]. A rotao acontece em etapas onde os pontos que formam o perfil gerador so rotacionados, por exemplo, em torno de um dos eixos de coordenada (X, Y, Z). A cada etapa da rotao tem-se um novo ngulo de rotao. Este ngulo obtido Fazendo-se a soma de um valor ao ngulo da etapa anterior, tem-se ento o valor correspondente ao ngulo da etapa atual. Este valor acrescentado ao ngulo de rotao a cada etapa denominado passo do ngulo. Quando este se trabalha com passo do ngulo positivo executa-se a varredura rotacional no sentido anti-horrio, enquanto para valore negativo realiza a rotao no sentido horrio. Existem basicamente dois tipos de varreduras rotacionais: para perfis abertos e para perfis fechados [1]. Diz-se que a varredura de um perfil aberto gerada a partir da rotao em torno do eixo formado pela reta que liga seu ponto inicial ao final [1][2]. Nas Figuras 2a e 2b mostram-se exemplos de varredura de perfis abertos.

R. A. Berri estudante do Mestrado em Computao Aplicada do Departamento de Cincia da Computao (DCC) da Universidade do Estado de Santa Catarina (UDESC) Joinville, SC Brasil (e-mail rafaelberri@gmail.com).

> UNIVERSIDADE DO ESTADO DE SANTA CATARINA - MOG < A varredura rotacional de um perfil fechado obtm-se pela sua rotao em torno de um eixo externo e coplanar. As figuras 2c e 2d do exemplos desse processo.

(a)

(b)

(c)

(d)

Fig. 2 Exemplos de Varredura Rotacional. (a) e (b) so varreduras abertas. (c) e (d) so exemplo de varredura fechada. d representa o valor acrescentado ao ngulo a cada passo. Fonte: [1]

eixo diretor (reta normal) ao plano da curva, formando uma superfcie ou um slido [6]. Valores positivos de deslocamento realiza-se a translao no mesmo sentido eixo diretor, e valores negativos realizam a translao em sentido contrrio [2]. Quando se utiliza uma curva ou faz-se um deslocamento coplanar face geradora o resultado da varredura translacional no um slido [2]. Existem basicamente dois tipos de varredura translacional: a simples e a cnica. Na Simples o perfil sofre um deslocamento e mantm a sua forma original (nas Figuras 6a e 6b exemplifica-se Varredura Translacional Simples). J na cnica os vrtices do perfil gerador, alm de serem transladados, convergem para um nico ponto [1] (nas Figuras 6c e 6d exemplifica-se Varredura Translacional Simples).

Para gerar um slido por varredura rotacional de boa qualidade visual, deve-se interagir em passos muito pequenos e abrangendo de 0 a 2 [3]. Neste artigo, efetua-se a varredura rotacional em torno dos eixos das coordenas (X, Y ou Z). Nas figuras 3, 4 e 5 so mostradas a equao em tabela para se rotacionar um ponto para o Eixo Z, X e Y respectivamente.

x' y' z'

cos sen 0

-sen cos 0

0 0 1

x y z

(a)

(b)

(c)

(d)

Fig. 6 Tipos de Varredura Translacional. (a) e (b) so varreduras simples. (c) e (d) so exemplo de varredura cnicas. Fonte: [1]

Fig. 3 Frmula para rotao de um Ponto (x, y, z) sobre o Eixo Z e com um ngulo . Fonte: [3][8][9].

Para se transladar um ponto pode-se aplicar a frmula contida na Figura 7. Nela utiliza-se um passo para o eixo X, Y e Z que so Tx, Ty e Tz respectivamente.

x' y' z'

1 0 0

0 cos sen

0 -sen cos

x y z

x' y' z'

x' y' z'

Fig. 4 Frmula para rotao de um Ponto (x, y, z) sobre o Eixo X e com um ngulo . Fonte: [3][8][9].

1 0 0 Tx

0 1 0 Ty

0 0 1 Tz

0 0 0 1

x' y' z'

cos 0 -sen

0 1 0

sen 0 cos

x y z

Fig. 7 Frmula para translao de um ponto. Fonte: [9]

Pode-se isolar o x, y e z na frmula acima, obtendo-se assim as equaes (4), (5) e (6) respectivamente. x' = x + Tx y' = y + Ty z' = z + Tz (4) (5) (6)

Fig. 5 Frmula para rotao de um Ponto (x, y, z) sobre o Eixo Z e com um ngulo . Fonte: [3][8][9].

Usando-se a frmula da Figura 5, chegam-se nas equaes para o x, y e z rotacionados e independentes. Como se mostra abaixo: x' = x * cos + z * sen y' = y z' = z * cos - x * sen (1) (2) (3)

Pode-se notar na equao (2) que pelo fato de se estar rotacionando pelo Eixo Y o valor y do ponto no se altera. B. Varredura Translacional Definimos como Varredura Translacional como sendo o ato de mover uma curva planar ou face geradora ao longo de um

Varrendo-se um perfil planar pode-se criar uma superfcie tubular, tendo a sua base inferior e superior o mesmo perfil planar transladado [5]. Os dois perfis P1 e P2 planares consistem em um conjunto de curvas de Bzier quadrticas racionais. P1 dito semelhante a P2 se e somente se todas as curvas em P1 so congruentes a todas as curvas em P2. Em outras palavras, congruncia de perfil requer congruncia curva [5]. Na Figura 8 mostra-se um exemplo de perfil formado por curvas Bzier transladado.

> UNIVERSIDADE DO ESTADO DE SANTA CATARINA - MOG <

slido SV formado pelo deslocamento da ferramenta pelo caminho M. A interseco da pea W com o slido SV resulta em um volume RV. Este exatamente o que ser desbastado da pea W pela ferramenta S. Utilizando-se de uma subtrao da pea W com RV obtm-se o resultado final do processo. A Figura 9 exemplifica todo o processo de usinagem dessa pea. III. ADJACENCY AND INCIDENCE FRAMEWORK (AIF) A estrutura de dados AIF representada por uma malha (ou clula), consiste em um conjunto de clulas (vrtices, arestas, faces) [11]. A estrutura em C++ apresentada na Figura 10. Nota-se que a estrutura no topologicamente orientada, pois no possui clulas orientadas. Porm geometricamente orientada pela normal face (classe Face) [11]. As normais s faces so determinadas, por exemplo, a orientao no sentido dos ponteiros do relgio (Figura 11). class Vertex { evector li; //arestas incidentes Point *pt; //geometria } class Edge { Vertex*v1,*v2;//vertices adjacente fvector li; //faces incidentes } class Face { evector la; //arestas adjacentes Point *nv; //normal face } class Mesh { int ID; //identificador vvector vv; //vector de vrtices evector ev; //vector de arestas fvector fv; //vector de faces }
Fig. 10 - Estrutura de dados AIF para codificao de Mesh. Fonte: [11].

Fig. 8 Varredura Translacional usando como construtora do perfil curvas Bzier para gerar uma superfcie tubular. Fonte: [5] C. Aplicao de Varredura para Corte de Superfcie (Cutting swept surface) Computer Numerically Control (CNC) para usinagem amplamente utilizado processo de fabricao. A simulao de usinagem CNC um componente importante para softwares CAM. Pode-se com ela verificar erros e melhorar a automao de processo de usinagem. Cutting Swept Surface ou CSS a superfcie que criada quando uma ferramenta cortante passa por uma pea [4]. Uma superfcie aproximada com CSS pode ser criada. A superfcie formada pela regio onde h contato entre a ferramenta e a pea usinada. Esta rea de contato cria curva de grazing (ou curva de silhueta) [4].

Fig. 9 Exemplificao do processo de obteno da pea final cortada pela ferramenta. Fonte: [10]

Pode-se exemplificar o processo para a obteno da pea desbastada d da seguinte forma. Tendo uma ferramenta S e sabendo-se o caminho M que deve ser percorrido para cortar a pea W, possvel criar um slido por varredura contendo todas as posies que a ferramenta ocupa no corte. Ento, o

Fig. 11 - Mecanismo de orientao. Fonte: [11]

> UNIVERSIDADE DO ESTADO DE SANTA CATARINA - MOG <

Conforme Silva et al 2003 [11] a vantagem de optar-se pelo AIF como estrutura de dados para malhas est de trs grandes frentes: 1) A estrutura de dados AIF suporta modelos poligonais e no apenas triangulares, manifold e no-manifold, mesmo para dimenses superiores; 2) Ao contrrio das outras estruturas de dados b-rep, a estrutura de dados AIF no orientada, ou seja, no contm clulas orientadas. Buscando com isso uma maior conciso que os b-rep tradicionais. 3) A estrutura de dados AIF foi concebida para assegurar pesquisas rpidas atravs de um nico operador. Operador que permite aceder rapidamente informao sobre adjacncias e incidncias independentemente do tamanho da malha. Os slidos gerados pelo software descrito no trabalho de desenvolvimento e implementao (Seo IV) so armazenados pela estrutura AIF. IV. DESCRIO DO TRABALHO DE IMPLEMENTAO Como forma de se testar e implementar alguns dos fundamentos apresentados neste artigo, desenvolveu-se um programa para Varredura Rotacional. O desenvolvimento deuse utilizando a linguagem de programao C++ com a biblioteca grfica OpenGL. O problema inicial foi encontrar uma estrutura simples e ao mesmo tempo eficiente para acomodar o slido resultante. Escolheu-se para tanto AIF (ver seo III). class Point { private: GLfloat x, y, z; public: Point(); Point(GLfloat X, GLfloat Y); Point(GLfloat X, GLfloat Y, GLfloat Z); void setPoint(GLfloat, GLfloat, GLfloat); GLfloat X(); GLfloat Y(); GLfloat Z(); }; class Vertex { private: list<Edge *> *edges; //arestas incidentes Point *pt; //geometria public: Vertex(); Vertex(Point *pt); ~Vertex(); Vertex *Clone(); void setPoint(Point *pt); Point *Pt(); list<Edge *> *Edges(); }; class Edge { private: Vertex *v1, *v2; //vertices adjacente list<Face *> *faces; //faces pertencentes public: Edge(Vertex *v1, Vertex *v2);

~Edge(); Vertex *Vertice1(); Vertex *Vertice2(); list<Face *> *Faces(); }; class Face { private: Point *normal; // Normal a face Edge *e1, *e2, *e3; //arestas adjacentes Triangular void points(Point **p1, Point **p2, Point **p3); public: Face(Edge *e1, Edge *e2, Edge *e3); ~Face(); Edge *Edge1(); Edge *Edge2(); Edge *Edge3(); void Amplitudo(GLfloat *xmin, GLfloat *xmax, GLfloat *ymin, GLfloat *ymax, GLfloat *zmin, GLfloat *zmax); void Show(int wHandle); }; class Solid { private: long int id; // identificao do solido list<Vertex *> *vertices; //vertices pertencentes list<Edge *> *arestas; //arestas pertencentes list<Face *> *faces; //faces pertencentes void inicia(long int ID); public: // cria o solido atravs de um conjunto de vrtices Solid(list<list<Vertex *> *> *cvertices); Solid(long int ID); Solid(); ~Solid(); long int getID(); list<Vertex *> *Vertices(); list<Edge *> *Arestas(); list<Face *> *Faces(); void Amplitudo(GLfloat *xmin, GLfloat *xmax, GLfloat *ymin, GLfloat *ymax, GLfloat *zmin, GLfloat *zmax); void Show(int wHandle); };
Fig. 12 Prottipos das classes para representar o slido

Na Figura 12 mostra-se os prottipos das classes baseados na estrutura de dados AIF. Deste prottipo podemos destacar a funo Solid::Show(int wHandle) que faz a exibio o slido em uma janela OpenGL, bastando para isso, passar por parmetro o ID da Janela.

Fig. 13 Tela do programa desenvolvido para teste de varredura Rotacional O programa consiste em duas partes principais: a criao do

> UNIVERSIDADE DO ESTADO DE SANTA CATARINA - MOG < perfil e a visualizao do slido final. Na Figura 13 mostra-se a tela do programa, onde a esquerda encontra-se a gerao do perfil e a direita o slido final. Na criao do perfil o programa monta uma polyline com os pontos escolhidos pelos usurios e na ordem de escolha. H uma linha vertical indicando o local onde ser feita a rotao. Esses pontos iniciais so o primeiro grupo de vrtices do slido final. Aps a escolha dos pontos iniciais todos os vrtices so rotacionados de 10 em 10 graus, sendo todos os novos grupos de vrtices formados partindo-se dos iniciais enquanto o ngulo da rotao for menor que 360. Os grupos de pontos iniciais e finais so os mesmo, ou seja, a rotao em 360 no calculada e sim so adotados os mesmos pontos iniciais. Na Figura 14 mostrado um algoritmo que exemplifica esse processo. // Vertices uma lista contendo os vrtices iniciais // gVertices uma lista dos grupos de vrtices (conjunto // de vrtices gerados a cada rotao). gVertices = nova lista de grupos de vrtices; incluir Vertices em gVertices; Para ngulo = 10 enquanto menor que 360 faa: Cria nova lista de vrtices VTS; Para todo ivertice contido em Vertices faa: Crie novo vrtice vt; // rotao no Eixo Y vt->X = ivertice->X * cos(ngulo * PI / 180) + ivertice->Z * sen(ngulo * PI / 180); vt->Y = ivertice->Y; vt->Z = ivertice->Z * cos(ngulo * PI / 180) ivertice->X * sen(ngulo * PI / 180); Fim Para; Incluir VTS em gVertices; Fim Para; // ultimo grupo (angulo 360) - Mesmos Vrtices iniciais incluir Vertices em gVertices;
Fig. 14 Algoritmo para gerao de conjuntos de vrtices transladados

(L2v1,L2v2) e por fim a Aresta5(L2v2,L1v2). A Face1 formada pelas Arestas 1, 2 e 3, j a Face 2 pelas Arestas 3, 4 e 5. 3) Agora L1v1 passa a ser o segundo vrtice (L1v2) e o L1v2 recebe o terceiro. O mesmo procedimento acontece com a lista L2. E o procedimento dois executado novamente enquanto L1v1 no for o ltimo vrtice contido na lista de vrtices L1. 4) Chegando-se ao final de L1 e L2, L1 passa a receber a lista L2 e j L2 recebe o prximo grupo de vrtices. Retornase novamente ao procedimento dois enquanto L1 no for o ltimo grupo de vrtices. Assim todas as faces e vrtices so gerados. Precisa-se apenas atentar para no recriar aresta j que uma aresta ir pertencer a at duas faces.

Fig. 15 Criao das faces e Arestas

A Figura 15 exemplifica o processo de criao das faces e arestas do slido. Os pontos em vermelho pertencem a Lista 1 e os pontos em verde a Lista 2. V. CONSIDERAES FINAIS Este artigo apresentou e discutiu conceitos sobre Varredura. Conceitos que foram necessrio para a criao de um software que execute a Varredura Rotacional. A primeira vista o desenvolvimento de um software que execute a varredura parece uma tarefa pouco morosa, j que a matemtica no muito complexa. Mas o mais difcil no est na matemtica rotacional e sim na necessidade de se trabalhar com uma estrutura de dados que comporte o slido resultante e ainda de se conhecer uma biblioteca grfica poderosa o bastante para exibir o resultado. Outra dificuldade encontrada foi na criao de um algoritmo que defina as faces e arestas (o slio propriamente dito) partindo-se de um conjunto de vrtices. O software foi desenvolvido em C++, utilizando ainda a biblioteca grfica OpenGL e como estrutura de armazenamento dos dados AIF. A estrutura AIF foi escolhida porque, conforme apresentado por Silva et al 2003 [11], mostra-se muito concisa comparando-se com os b-rep tradicionais.

O prximo passo receber essa lista de grupos de vrtices e executar a criao do slido. Essa operao executada pela classe solid em sua funo construtora. Na inicializao da classe passa-se o gVertices e a partir dele so criados todas as faces e arestas. Os vrtices j esto criados no gVertices e somente so incorporados a classe. A criao das faces e arestas acontece da seguinte forma: 1) De dois em dois os grupos de vrtices so processados. 2) Ento pega-se os dois primeiros vrtices do primeiro grupo (L1) e tambm os dois primeiros vrtices do segundo grupo (L2). Os vrtices 1 e 2 da primeira lista denominamos de L1v1 e L1v2 respectivamente, seguindo a mesma lgica de nomenclatura temos L2v1 e L2v2 sendo os vrtices 1 e 2 da segunda lista. Pode-se agora criar as arestas: Aresta1(L1v2, L1v1); Aresta2 (L1v1, L2v1); Aresta 3(L2v1,L1v2); Aresta 4

> UNIVERSIDADE DO ESTADO DE SANTA CATARINA - MOG < REFERNCIAS


A. L. C. de C. Magalhes, C. A. Shimizu e R. C. Mesquita, Uma Estratgia Para Gerar Malha de Eelementos Finitos em Slidos Definidos por Varredura, in Computational Methods in Engineering, pp 183.1-183.11, 1999. [2] A. L. C. de C. Magalhes, Estudo, Projeto e Implementao de um Modelador de Slidos Voltado para Aplicaes em Eletromagnetismo, Tese de Doutorado para o Programa de Ps-graduao em Engenharia Eltrica , Universidade Federal de Minas Gerais, Belo Horizonte- MG, 2000. [3] D. Salomon. Curves and Surfaces for Computer Graphics, Department of Computer Science, California State University, Northridge, U.S.A., Springer Science+Business Media, Inc, 2006. [4] A. Nguyen, D. Le, V. Ha. An implementation of CSG modeling technique on Machining Simulation using C++ and Open GL, in Proceedings of ISMAI-3 2009, February 23-25, 2009, Meiji Univ., JAPAN. [5] A. I. Protopsaltis, I. Fudos. A Feature-Based Approach to Reengineering CAD Models from Cross Sections, in Computer-Aided Design & Applications, 7(5), 2010, 739-757 2010 CAD Solutions, LLC. [6] M. E. Mortenson. (2006). Title Geometric Modeling. Third Edition. Industrial Press Inc, New York, New York, 10016-4078. [7] C. M. Hoffmann, J. E. Hopcroft. Geometric ambiguities in boundary representations in Computeraided design, Guildford, v. 19, n. 3, p. 141-147, apr. 1987. [8] I. Zeid. (1991). Title CAD/CAM Theory And Pratice. McGraw-Hill, USA. [9] G. S. Owen. (1999, July 08). Modeling in Computer Graphics [Online]. Available http://www.siggraph.org/education/materials/HyperGraph/modeling/cg model.htm. Data Acesso: 08/07/2012. [10] A. I. Protopsaltis, I. Fudos. High accuracy NC milling simulation using composite adaptively sampled distance fields, in Computer-Aided Design 44, 2012, 522536, Elsevier Ltd. [11] F. G. M. Silva, A. J. P. Gomes. Adjacency and incidence framework a data structure for efficient and fast management of multiresolution meshes. Proceedings of the 1st International Conference on Computer Graphics and Interactive Techniques, Melbourne, Australia, 2003; 159 166. [1]

Potrebbero piacerti anche