É interessante que este vetor seja unitário pois assim
se pode controlar a velocidade do deslocamento.
A fórmula a seguir demonstra como pode ser feito o deslocamento
descrito acima.
PosicaoNova = PosicaoAtual + VetorAlvoUnitario * TamanhoDoPasso
AlvoNovo = AlvoAtual + + VetorAlvoUnitario * TamanhoDoPasso
Para rotacionar um ponto ao redor deste eixo usa-se a seguinte fórmula:
Note, entretanto que esta fórmula rotaciona o ponto ao redor do ponto (0,0,0).AlvoNovo.X = AlvoAtual.X*cos(alfa) + AlvoAtual.Z*sen(alfa)
AlvoNovo.Y = AlvoAtual.Y
AlvoNovo.Z = -AlvoAtual.X*sen(alfa) + AlvoAtual.Z*cos(alfa)
Como fazer para rotacioná-lo corretamente ?
Uma alternativa é executar os seguintes passos:
Para tanto, calcule um novo "ALVO", fazendo
NOVO_ALVO = ALVO-OBS;
AlvoNovoROT.X = NOVO_ALVO.X*cos(alfa) + NOVO_ALVO.Z*sen(alfa)
AlvoNovoROT.Y = NOVO_ALVO.Y
AlvoNovoROT.Z = -NOVO_ALVO.X*sen(alfa) + NOVO_ALVO.Z*cos(alfa)
Para tanto, calcule um novo alvo, fazendo
ALVO_FINAL = AlvoNovoROT + OBS;