Skip to content

Instantly share code, notes, and snippets.

@pstch
Created May 29, 2018 15:35
Show Gist options
  • Save pstch/425cc90b709eb947fe1134e2b2f2ce21 to your computer and use it in GitHub Desktop.
Save pstch/425cc90b709eb947fe1134e2b2f2ce21 to your computer and use it in GitHub Desktop.
Détermination d'un algorithme permettant de "plaquer" un nuage de points sur un plan
  • points N := nuage de points cible

  • point G := centre de gravité du nuage de points N

  • plan P := plan pointant vers Z, passant par le point le plus bas du nuage de points N

  • début boucle (détermination du premier point de contact)

    • droite xGA := perpendiculaire dans le plan P à (GA)

    • angle aGA := plus petit angle qui fait entrer d'autres points de N en contact avec le plan

    • appliquer une rotation d'axe xGA et d'angle aGA au plan P

    • B := barycentre des points de N en contact avec P (sauf A)

    • plan pAB := plan perpendiculaire à (AB) passant par A

    • plan pAC := plan perpendiculaire à (AB) passant par C

    • si G ne se trouve pas entre pAB et pAC :

      • A := B
      • revenir en début de boucle
    • sinon:

      • sortir de la boucle
  • fin boucle

  • début boucle (détermination des deux autres points de contact)

    • droite xAB := (AB)

    • angle aAB := plus petit angle qui fait entrer d'autres points en contact avec le plan

    • appliquer une rotation d'axe xAB et d'angle aAB au plan P

    • C := barycentre des points de N en contacts avec P (sauf A et B)

    • plan pAC := plan perpendiculaire à (AC) passant par A

    • plan pCA := plan perpendiculaire à (AC) passant par C

    • si G ne se trouve pas entre pAC et pCA :

      • A := C
      • revenir en début de boucle
    • sinon :

      • sortir de la boucle
    • plan pBC := plan perpendiculaire à (BC) passant par B

    • plan pCB := plan perpendiculaire à (BC) passant par C

    • si G ne se trouve pas entre pBC et pCB :

      • B := C
      • revenir en début de boucle
    • sinon :

      • sortir de la boucle
  • fin boucle

  • appliquer une rotation d'axe xGA et d'angle aGA au nuage de points N

  • appliquer une rotation d'axe xAB et d'angle aAB au nuage de points N

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment