Como funciona a ranhura Catmull-Rom centrípeta?
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?
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.