Je souhaite projeter mon polygone le long d'un vecteur sur un plan dans l'espace 3D. J'utiliserais de préférence une matrice de transformation unique pour ce faire, mais je ne sais pas comment construire une matrice de ce genre.Comment projeter un polygone planaire sur un plan dans un espace 3D
Compte tenu
- paramètres de l'avion (hache de + de + cz + d),
- le monde les coordonnées de mon Polygon. Comme indiqué dans le titre, tous les sommets de mon polygone se trouvent dans un autre plan.
- le vecteur de direction le long de laquelle projeter mon polygone (actuellement le vecteur normal de l'avion du polygone)
but de matrice de transformation 4x4 -a qui réalise la projection requise,
ou
- un aperçu de la façon d'en construire un moi-même
MISE À JOUR
Merci pour la réponse, cela fonctionne comme prévu. Un mot d'avertissement aux personnes qui ont trouvé ceci: Si le plan de projection normal est parallèle au vecteur de projection, le dénominateur D deviendra (presque) 0, ainsi pour éviter des choses étranges de se produire, une sorte de manipulation pour ce cas particulier est nécessaire. Je l'ai résolu en vérifiant si D < 1e-5, et si oui, traduisez simplement mon polygone le long du vecteur d'extrusion. Supposons que l'un des sommets du polygone soit (x0, y0, z0)
et que le vecteur de direction soit (dx,dy,dz)
.
Merci pour la solution complète. Je vais essayer tout de suite – sum1stolemyname
J'ai implémenté votre solution. Cependant, j'ai rencontré des problèmes car mon vecteur de direction est (1 | 0 | 0) et l'avion est à un angle de 45 °: Vue latérale: '| ---->/'où | est le polygone et/est l'avion sur lequel il faut se lancer. Dans ce cas, un * dx/D = 1, où les deux autres entrys dans la première colonne sont 0 (dy = dzt = 0). cela conduit à l'ensemble du coumn étant 0, effaçant effectivement mon polygone à 0. Mon application ne aime pas cela. Connaissez-vous une solution de contournement pour cela? – sum1stolemyname
@ sum1: La première colonne étant nulle signifie que la coordonnée x des sommets d'origine sera ignorée. Ceci est attendu puisque votre direction de projection est parallèle à l'axe x. Il ne sera pas à l'échelle de votre polygone à 0. – interjay