Isto é o que meu professor me disse nos cursos:
Consideramos apenas matrizes 4 * 4. Eles são usados para girar, dimensionar ou converter objetos (ou qualquer combinação dessas operações). Matrizes também são usadas posteriormente na implementação do modelo de câmera virtual. Se você não souber a diferença entre uma transformação vetorial e uma transformação de ponto, procure-a.
Não consigo encontrar uma resposta e fiz uma conta para este site apenas para esta pergunta.
Respostas:
Aqui está a resposta simples.
Em 4D, para poder multiplicá-los por uma matriz 4x4, os vetores são representados como (x, y, z, 0) e os pontos são representados como (x, y, z, 1).
Como a quarta linha de uma matriz 4x4 representa a conversão da matriz, as representações acima fazem com que os pontos sejam afetados pela conversão, mas os vetores não.
Os vetores e pontos são afetados pela rotação, escala, etc.
Embargo:
Há uma discussão mais profunda se você espera que os vetores tenham certas propriedades. Por exemplo, se você transformar o normal de um triângulo pela mesma matriz que transforma os vértices do triângulo, provavelmente não será mais o vetor normal desse triângulo. Isso ocorre porque os vetores normais têm uma espécie de relação inversa com os vértices dos quais são calculados.
fonte
Agora, a pergunta é: como passamos de um sistema de coordenadas 3D para um sistema 4D ? A resposta é " coordenadas homogêneas ".
Como fazemos isso?
Distinguimos entre vetores de direção e posição . Os vetores de direção, como o nome sugere, têm uma direção na qual estão apontando; também nos preocupamos com o tamanho deles, mas eles não são afetados pelas traduções, pois não nos importamos com a posição deles. Os vetores de posição (ou simplesmente "pontos") podem ser traduzidos ou movidos; eles geralmente são representados em relação à origem, ou seja, como um vetor da origem até o próprio ponto.
fonte
Se você procurar a definição de um vetor e um ponto, então um vetor é:
E um ponto é:
Então, você poderia dizer que um vetor é uma direção com escala e um ponto é um local.
Então, se você transformar um vetor, basta girá-lo e escalá-lo. Com um ponto, você também o converte (a rotação e o dimensionamento de um ponto estão em torno da origem, uma vez que emite apenas um local, o ponto em si não pode ser girado).
Na maioria das vezes, um vetor e um ponto são colocados no mesmo contêiner, um vetor com 4 componentes. A única diferença é o componente w. Se o componente w for 0, é uma direção. Se for 1, o vetor é um ponto.
A razão para isso pode ser encontrada na própria matriz. Ele utiliza a maneira como você multiplica um vetor com 4 componentes com uma matriz 4x4. Se você não sabe como isso funciona, sugiro um google rápido.
Como você pode ver, se o último componente for 0, você terá uma multiplicação com 0 e, portanto, o resultado será 0 e não haverá conversão.
Isso facilita na computação gráfica com objetos poligonais. Você tem a mesma matriz de transformação para transformar as posições, mas também as normais. Como os normais têm seu componente w definido como 0 e o componente w das posições é 1, os normais são apenas rotacionados (e também redimensionados, o que pode levar a coisas estranhas, portanto, na maioria das vezes, o normal é normalizado depois. Não é ' Na verdade, é recomendável usar a mesma matriz para posições e rotações por causa de coisas estranhas! Veja o comentário de @JarkkoL.) e as posições são traduzidas (e giradas e redimensionadas em torno da origem).
Espero não ter cometido um erro: P, e isso ajudou você!
fonte