Pergunta

A partir neste site , que parece ter a informação mais detalhada sobre Catmull splines -Rom, parece que quatro pontos são necessários para criar a spline. No entanto, ele não menciona como os pontos p0 e p3 afetar os valores entre P1 e P2.

Outra questão que tenho é como você criar estrias contínuas? Seria tão fácil como definir os pontos p1, p2 a ser contínuo com P4, P5, fazendo p4 = p2 (ou seja, assumindo que temos p0, p1, p2, P3, P4, P5, P6, ..., pN ).

A questão mais geral é como seria um cálculo tangentes sobre estrias Catmull-Rom? Será que tem que envolver tomar dois pontos na ranhura (dizer a 0,01, 0,011) e obter a tangente baseado em Pitágoras, dadas as coordenadas de posição desses valores de entrada dão?

Foi útil?

Solução

Dê uma olhada na equação 2 - que descreve como os pontos de controle afetam a linha. Você pode ver pontos P0 e P3 ir na equação para traçar pontos ao longo da curva de P1 para P2. Você também verá que a equação dá P1 quando t == 0 e P2 quando t == 1.

Esta equação exemplo pode ser generalizado. Se você tem pontos R0, R1, ... RN então você pode traçar os pontos entre RK e RK + 1 usando a equação 2 com P0 = RK - 1, P1 = RK, P2 = RK + 1 e P3 = RK + 2.

Você não pode desenhar a partir R0 para R1 ou de RN - 1 para RN a menos que você adicionar pontos de controle extra para substituir R - 1 e RN + 1. A idéia geral é que você pode escolher o que pontos você deseja adicionar à cabeça ea cauda de uma sequência para dar-se todos os parâmetros para calcular o spline.

Você pode juntar duas splines juntos, soltando um dos pontos de controle entre eles. Digamos que você tenha R0, R1, ..., RN e S0, S1, ... SM eles podem ser juntou-se à R0, R1, ..., RN - 1, S1, S2, ... SM.

Para calcular a tangente em qualquer ponto apenas tomar a derivada da equação 2.

Outras dicas

O artigo Wikipedia vai para um pouco mais de profundidade. A forma geral da spline toma como pontos de controlo de entrada 2 com vectores tangentes associados. segmentos adicionais spline podem então ser adicionados desde que os vectores tangentes aos pontos de controlo comuns são iguais, o que preserva a continuidade C1.

Na forma Catmull-Rom específica, o vector tangente em pontos intermédios é determinada pelos locais de vizinhos pontos de controle. Assim, para criar uma ranhura contínua C1 através de múltiplos pontos, é suficiente para fornecer o conjunto de pontos de controlo e os vectores tangente no primeiro e último ponto de controlo. Eu acho que o comportamento padrão é usar P1 - P0 para o vetor tangente em P0 e PN -. PN-1 a PN

De acordo com o artigo Wikipedia, para calcular a tangente no ponto de controle da PN, você usa esta equação:

T(n) = (P(n - 1) + P(n + 1)) / 2

Isso também responde a primeira pergunta. Para um conjunto de pontos de controlo 4, P1, P2, P3, P4, interpolando entre valores de P2 e P3 requer forma informações todos os 4 pontos de controlo. P2 e P3 se definem os pontos de extremidade por meio da qual o segmento de interpolação deve passar. P1 e P3 determinar o vector de tangente do segmento interpolando terá no ponto P2. P4 e P2 determinar o vector de tangente do segmento terá no ponto P3. Os vetores tangentes em pontos de controlo P2 e P3 influenciar a forma do segmento de interpolação entre eles.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top