# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  Projection d'un ensemble des points 3D sur un Plan 2D

## fraisa1985

Bonjour, 
S'il vous plat j'ai un ensemble des points 3d (ayant les coordonnes (x,y,z)).
Je dois projeter ces ensembles des points sur un plan qui sera dfinie  partir d'un normal.
En faite j'ai comme donnes le normal de ce plan,  partir de ce normal je doit tout d'abord dterminer le plan qui lui associe et qui passe par le point dpart de ce plan puis faire projeter un ensemble de points 3D sur ce plan.
Je travaille sur matlab.
Toute information sera le bien venue et merci d'avance

----------


## benDelphic

c'est simple : la projection est orthogonale il suffit de rsoudre le systme pour lequel OM est *parallle*  N o N est le vecteur normale et est le point en question de coordonnes ( X0, Y0,Z0)... et M est un point du plan de normale N
ps : dsol j'ai dis quelques btises ... mais pour te dire un plan ncessite une normale et un point !!!

----------


## fraisa1985

> c'est simple : la projection est orthogonale il suffit de rsoudre le systme pour lequel OM est orthogonal  N o N est le vecteur normale et est le point en question de coordonnes ( X0, Y0,Z0)... et M est un point du plan de normale N
> le produit vectoriel doit etre nul ( orthogonal )


Pouvez-vous claircir encore plus, je suis encore novice dans ce domaine.


Merci d'avance.

----------


## benDelphic

le point O( X0,Y0,Z0) est le point  projeter
le vecteur N s'cris (n0,n1,n3); soit le point M le point obtenu par projection orthogonale de O sur un plan de normale N . le vecteur OM est ( X-x0,Y-Y0,Z-Z0) ... et d'aprs la dfinition OM parallle  N ie OM = k N

----------


## fraisa1985

il semble que t'a pas compris le problme:
Tout d'abord comment je peux dterminer le plan  partir d'un normal et un point ?

Puis comment faire la projection des points 3d dans l'espace sur ce plan ?

J'espre que c'est plus clair maintenant

----------


## pseudocode

> Tout d'abord comment je peux dterminer le plan  partir d'un normal et un point ?


Voila, c'est fait. Un vecteur normal N et un point de passage A dterminent totalement un plan.  ::D: 

Mais je suppose que tu cherches l'quation cartsienne du plan.

Vecteur normal : N (n1,n2,n3)
Point de passage : A (a1,a2,a3)
Equation du plan :  n1.x + n2.y + n3.z - (n1.a1 + n2.a2 + n3.a3) =0




> Puis comment faire la projection des points 3d dans l'espace sur ce plan ?


La solution propose par benDelphic fonctionne, bien que je prfre passer par les matrices de projection.

----------


## fraisa1985

> Voila, c'est fait. Un vecteur normal N et un point de passage A dterminent totalement un plan. 
> 
> Mais je suppose que tu cherches l'quation cartsienne du plan.
> 
> Vecteur normal : N (n1,n2,n3)
> Point de passage : A (a1,a2,a3)
> Equation du plan :  n1.x + n2.y + n3.z - (n1.a1 + n2.a2 + n3.a3) =0
> 
> 
> ...


Je vous remercie pour votre rponse, mais comment passer par les matrices de projection ?
Merci d'avance
Je suis dsol pour la duplication

----------


## pseudocode

> Je vous remercie pour votre rponse, mais comment passer par les matrices de projection ?


Hum... c'est difficile de rsumer a en quelques lignes. Pour faire simple, commence par passer par les projections vectorielles:

Admettons un plan est dfini par un point A et un vecteur normal N.
Soit (U,V,N) une base ortho (donc U et V sont dans le plan).

Soit un point P quelconque. Si on crit le vecteur AP sur cette base, on obtient 



```

```

Pour trouver le projet ortho de ce vecteur sur le plan, il suffit d'annuler la composante sur N, ce qui nous laisse effectivement avec les 2 composantes sur U,V qui sont dans le plan.

P' le projet de P sur le plan est donc tel que :



```

```

Reste a calculer c3, ce qui se fait facilement par le produit scalaire :

c3 = <AP,N> / <N,N> = <AP,N> / norme(N)

Et voila: 



```

```

----------


## fraisa1985

> Hum... c'est difficile de rsumer a en quelques lignes. Pour faire simple, commence par passer par les projections vectorielles:
> 
> Admettons un plan est dfini par un point A et un vecteur normal N.
> Soit (U,V,N) une base ortho (donc U et V sont dans le plan).
> 
> Soit un point P quelconque. Si on crit le vecteur AP sur cette base, on obtient 
> 
> 
> 
> ...


Je vous remerie infinement pour votre rponse.
Juste un petit question s'il vous plat, <AP,N> c'est le norme ou quoi exactement ?
et comment vous avez dduit le calcul de c3 s'il vous plat ?

----------


## pseudocode

> Je vous remerie infinement pour votre rponse.
> Juste un petit question s'il vous plat, <AP,N> c'est le norme ou quoi exactement ?
> et comment vous avez dduit le calcul de c3 s'il vous plat ?


<T,S> c'est le produit scalaire des deux vecteurs T et S. Le calcul de c3 vient d'une proprit du produit scalaire : le rsultat est le produit de la norme de l'un par la distance algbrique de la projection du second.

Enfin bon, l'essentiel c'est que ca marche.  ::D: 

A partir de la formule donne ci-avant, on peut faire intervenir le point O (0,0,0) dans les vecteurs AP = AO+OP et AP' = AO+OP'. 



```

```

Ce qui nous permet d'avoir directement les coordones de P (car le vecteur OP  les memes coordonnes que le point P).



```
P' = P - ((<AO,N> + <OP,N>) / norme²(N)) .N
```

et en reprenant les conventions de nommage du post #6 et P(p1,p2,p3):

<AO,N> = n1.(-a1) + n2.(-a2) + n3.(-a3)
<OP,N> = n1.p1 + n2.p2 + n3.p3
norme(N) = a1 + a2 + a3

Si tu dveloppes les formules pour les 3 composantes de P', tu arrives a une formulation sympathique de l'operateur de projection sous forme matricielle. C'est ce dont je parlais dans mon 1er post.

----------


## fraisa1985

Mercie beaucoup, mais franchement j'ai pas encore compris comment vous avez dduit :


```

```

Je suis encore novice, don s'il vous plat essai de me faire comprendre pas par pas  ::): .
Merci d'avance

----------


## pseudocode

> Mercie beaucoup, mais franchement j'ai pas encore compris comment vous avez dduit :
> 
> 
> ```
> 
> ```


Oh. Ca c'est tout simple.

Comme on a pos que le vecteur AP = c1.U + c2.V + c3.N, alors :

<AP , N> = <c1.U + c2.V + c3.N , N>

Avec les proprits du produit scalaire on obtient :

<AP , N> = c1.<U,N> + c2.<V,N> + c3.<N,N>

Or, comme U,V,N sont orthogonaux entre eux, on a <U,N>=0 et <V,N>=0. Et donc :

<AP , N> = c3.<N,N>

d'o:

c3 = <AP , N> / <N,N>

----------


## Froooom

Par curiosit, pour quelle raison  tu besoin de projeter des points 3D sur un plan ?
Je me demande car j'avais besoin de faire exactement l'inverse le plan 2D tant une image.

Si tu ne peux pas le dire c'est pas grave, j'irai voir ailleurs si j'y suis.

----------


## fraisa1985

> Par curiosit, pour quelle raison  tu besoin de projeter des points 3D sur un plan ?
> Je me demande car j'avais besoin de faire exactement l'inverse le plan 2D tant une image.
> 
> Si tu ne peux pas le dire c'est pas grave, j'irai voir ailleurs si j'y suis.


Non sans aucun problme, en fate le but de ce forum est partag des ides... pour le mieux de tous.
En fate je ne trouve pas une mthode de comparaison des courbes 3d qui sera invariant par rapport aux points de dparts... C'est pour cela j't oblig de le projet en 2D pour que je puisse utiliser la mthode de descripteur de Fourier.

----------

