Partage
  • Partager sur Facebook
  • Partager sur Twitter

Perspective : Projection sur un plan

    8 mars 2020 à 21:22:24

    Bonjours a tous,

    J'ai un TP a faire, mais je n'obtient pas le bon "résultat" (graphique) sur le dernier exercice, et j'aimerais donc que vous me valider le raisonnement.

    Voici tous d'abord l’énoncer :

    Soit A le point représentant l'observateur, et B la projection perpendiculaire de A sur pi
    Soit P un point de l’espace tel que AP ne soit pas parallèle au plan π. Notons P'
    le point d’intersection de AP avec π. L’Exercice 1 nous fournit un repère orthonormé {u1,u2} sur
    le plan π, que l’on imagine centrée au point B. On cherche à déterminer dans ce repère les
    coordonnées (p1', p2') de P'.
    On remarque que les vecteurs AP et AP' sont colinéaires, c’est-`a-dire qu'il existe un λ appartenant à R tel que AP = λAP'. Ce λ peut être d´eterminée par le fait que 0 = <AB - AP', AB>
    
    1. Trouvez la formule pour calculer λ, ainsi que celles pour calculer les coordonnées
    (p1',p2').
    2. Écrivez une fonction qui étant donnée A, P1, P2, P3 et P, calcule les coordonnées par rapport à la base {u1,u2} de la projection centrale de P de centre A sur le plan pi.
    Comme on va le voir, il est plus pratique de passer P `a la fonction par ses coordonnées (x, y, z).

    Voici donc la logique que j'ai employer :

     On sait que <AB - AP' |AB> = 0
     => <AB|AB> - <AP'|AB> = 0
     => <AB|AB> = <AP'|AB>
     => (ABx)² + (ABy)² + (ABz)² = AP'x * ABx + AP'y * ABy + AP'z * ABz
     => (ABx)² + (ABy)² + (ABz)² = lambda*APx*ABx + lambda*APy*ABy + lambda*APz*ABz
     => (ABx)² + (ABy)² + (ABz)² = lambda * (APx*ABx + APy*ABy + APz*ABz)
     => lambda = [(ABx)² + (ABy)² + (ABz)²] / (APx*ABx + APy*ABy + APz*ABz)
    
     On commence par calculer les coordonnées de AP' = lambda * AP
     On applique ensuite la traslation AP' au point A
     On a donc P' = (Ax + AP'x ; Ay + AP'y ; Az + AP'z) 
                  = (Ax + lambda * APx ; Ay + lambda * APy ; Az + lambda * APz)
     On calcul ensuite le vecteur BP'
     On cherche la alpha et beta tel que :
     BP' = alpha * u1 + beta * u2
     Dans notre cas, u1z = 0, donc beta = BP'z / u2
     Donc alpha = (BP'x - beta * u2x) / u1x
     (p1', p2') = (aplha, beta)

    Le problème c'est que la projection de la fonction :

    t -> (x(t), y(t), z(t))^t = (5 + sin(20πt), 5.5 + sin(18πt), −4 + sin(22πt))^t
    M^t : la transposer de la matrice M
    
    

    Devrait donner :


    Alors qu’actuellement j’obtiens :

    Si quelqu'un connais aussi MatLab, voici le code que j'utilise pour appliquer la demarche decrite ci-dessus :

    function [xp,yp] = Perspective(A,B,u1,u2,x,y,z)
        % On commence par calculer les vecteurs AB et AP
        AB = B - A;
        P = [x; y; z];
        AP = P - A;
        
        % On calcul ensuite lambda
        % <AB,AB>
        dotAB = dot(AB,AB);
        % <AP,AB>
        produitScalaireAPAB = (AP(1,:)*AB(1,:) + AP(2,:)*AB(2,:) + AP(3,:)*AB(3,:)); 
        % On rempli une matrice de la taille du nombre de point avec <AP,AB>
        matriceABAB = ones(size(produitScalaireAPAB)) * dotAB;
        % On obtient alors les differents lambdas pour les differents point P
        lambda = matriceABAB / produitScalaireAPAB;
        
        % On calcul les differents P'
        P_prime = lambda .* AP + A;
        
        % On calcul vecteur BP'
        BP_prime = P_prime - B;
        
        % On commence par calculer les differents beta
        beta = BP_prime(3,:) / u2(3);
        yp = beta;
        
        % On calcul enfin alpha
        alpha = (BP_prime(1,:) - beta .* u2(1)) / u1(1);
        xp = alpha;    
    end

    (Si la logique est valider, je publierai le code sur un forum dédier a la programmation, le but étant surtout de savoir si la démarche est correcte)

    Merci d'avoir prit le temps d'avoir lu ce pavé, et merci d'avance pour votre aide

    -
    Edité par K4kugen 8 mars 2020 à 21:25:39

    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2020 à 14:20:06

      Salut, c'est quoi l'équation de ton plan ?
      • Partager sur Facebook
      • Partager sur Twitter

      Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

      Perspective : Projection sur un plan

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown