8.2. Exercícios

  1. Utilizando as técnicas de seleção de objetos apresentadas no Capítulo 8, implemente um programa splineinter.c que proporcione um processo de modelagem interativa para este exemplo. Utilizando o botão esquerdo do mouse, o usuário deverá poder movimentar os pontos da malha de controle, podendo assim controlar livremente a forma da superfície.

    Um método de seleção envolve lançar um raio através da localização do mouse e testar a proximidade com os objetos da cena. O raio pode ser gerado chamando duas vezes a função gluUnProject(), uma vez para o plano mais próximo do usuário (winz=0) e outra para o plano mais distante (winz=1). Subtraindo o resultado obtido para o plano mais distante do resultado obtido para o plano mais próximo será possível obter a direção do raio. A origem do raio ficará na posição do observador, no plano mais próximo.

    A posição do ponto em uma reta que se encontra mais próxima de um dado ponto no espaço pode obtida pela seguinte equação:

                       P_o + (R - P_o) dot V
                             ---------------  V
                                 V dot V 

    Nesta equação, P_o é obtida da equação que define a reta, P(t) = P_o + V t. V é o vetor que dá a direção da reta, e 'dot' representa a operação de produto interno.