begin process at 2008 07 06 16:22:57
1 205 627 membres
195 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RECHERCHE DE L'ÉQUATION CARTÉSIENNE D'UN PLAN À PARTIR DES COORDONNÉES DE 3 POINTS DE L'ESPACE


Information sur la source

Catégorie :Maths & Algorithmes Classé sous : equation, cartésienne, plan, espace, point Niveau : Débutant Date de création : 13/06/2006 Vu / téléchargé: 7 523 / 160

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

Recherche l'équation cartésienne d'un plan à partir des coordonnées de  3 points de l'espace.

Source

  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <math.h>
  • int main(int argc, char *argv[])
  • {
  • double xA=0,yA=0,zA=0,xB=0,yB=0,zB=0,xC=0,yC=0,zC=0,xAb=0,yAb=0,zAb=0,xAc=0,yAc=0,zAc=0,mineurUne=0,mineurDeux=0,mineurTrois=0,termeIndependant=0,verification=0;
  • printf("##EQUATION CARTESIENNE D'UN PLAN A PARTIR DE TROIS POINTS## Par Yvan\n\n\n");
  • printf("Entrez les coordonnees du point A\n");
  • printf("Xa :\n");
  • scanf("%lf",&xA);
  • printf("Ya :\n");
  • scanf("%lf",&yA);
  • printf("Za :\n");
  • scanf("%lf",&zA);
  • printf("Entrez les coordonnees du point B\n");
  • printf("Xb :\n");
  • scanf("%lf",&xB);
  • printf("Yb :\n");
  • scanf("%lf",&yB);
  • printf("Zb :\n");
  • scanf("%lf",&zB);
  • printf("Entrez les coordonnees du point C\n");
  • printf("Xc :\n");
  • scanf("%lf",&xC);
  • printf("Yc :\n");
  • scanf("%lf",&yC);
  • printf("Zc :\n");
  • scanf("%lf",&zC);
  • printf("AX= Lambda*AB+Mu*AC\n\n");//Formule générale
  • printf("AX=(X-%lf);(Y-%lf);(Z-%lf)\n",xA,yA,zA);
  • printf("AB=((%lf-%lf);(%lf-%lf);((%lf-%lf))\n",xB,xA,yB,yA,zB,zA);
  • printf("AC=((%lf-%lf);(%lf-%lf);((%lf-%lf))\n\n",xC,xA,yC,yA,zC,zA);
  • xAb=xB-xA;
  • yAb=yB-yA;
  • zAb=zB-zA;
  • xAc=xC-xA;
  • yAc=yC-yA;
  • zAc=zC-zA;
  • printf("AB=(%lf;%lf;%lf)\n",xAb,yAb,zAb);
  • printf("AC=(%lf;%lf;%lf)\n\n",xAc,yAc,zAc);
  • //Je cherche les mineurs car je résous matriciellement cette équation
  • mineurUne=(yAb*zAc)-(zAb*yAc);
  • mineurDeux=(-1)*((xAb*zAc)-(zAb*xAc));
  • mineurTrois=(xAb*yAc)-(yAb*xAc);
  • termeIndependant=((-1*xA*mineurUne)+(-1*yA*mineurDeux)+(-1*zA*mineurTrois));
  • printf("L'equation cartesienne est \n\n %lf X + %lf Y + %lf Z + %lf\n\n",mineurUne,mineurDeux,mineurTrois,termeIndependant);
  • verification=(xA*mineurUne+yA*mineurDeux+zA*mineurTrois+termeIndependant+xB*mineurUne+yB*mineurDeux+zB*mineurTrois+termeIndependant+xC*mineurUne+yC*mineurDeux+zC*mineurTrois+termeIndependant);
  • printf("Verification : On injecte les coordonnees de A,B et C dans l'equation cartesienne, ce qui nous donne %lf (Si cette valeur vaut zero, alors c'est correct)\n\n",verification);
  • system("PAUSE");
  • return 0;
  • }
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main(int argc, char *argv[])
{

double xA=0,yA=0,zA=0,xB=0,yB=0,zB=0,xC=0,yC=0,zC=0,xAb=0,yAb=0,zAb=0,xAc=0,yAc=0,zAc=0,mineurUne=0,mineurDeux=0,mineurTrois=0,termeIndependant=0,verification=0;

printf("##EQUATION CARTESIENNE D'UN PLAN A PARTIR DE TROIS POINTS##  Par Yvan\n\n\n");

printf("Entrez les coordonnees du point A\n");
printf("Xa :\n");
scanf("%lf",&xA);
printf("Ya :\n");
scanf("%lf",&yA);
printf("Za :\n");
scanf("%lf",&zA);

printf("Entrez les coordonnees du point B\n");
printf("Xb :\n");
scanf("%lf",&xB);
printf("Yb :\n");
scanf("%lf",&yB);
printf("Zb :\n");
scanf("%lf",&zB);

printf("Entrez les coordonnees du point C\n");
printf("Xc :\n");
scanf("%lf",&xC);
printf("Yc :\n");
scanf("%lf",&yC);
printf("Zc :\n");
scanf("%lf",&zC);

printf("AX= Lambda*AB+Mu*AC\n\n");//Formule générale

printf("AX=(X-%lf);(Y-%lf);(Z-%lf)\n",xA,yA,zA);
printf("AB=((%lf-%lf);(%lf-%lf);((%lf-%lf))\n",xB,xA,yB,yA,zB,zA);
printf("AC=((%lf-%lf);(%lf-%lf);((%lf-%lf))\n\n",xC,xA,yC,yA,zC,zA);

xAb=xB-xA;
yAb=yB-yA;
zAb=zB-zA;

xAc=xC-xA;
yAc=yC-yA;
zAc=zC-zA;

printf("AB=(%lf;%lf;%lf)\n",xAb,yAb,zAb);
printf("AC=(%lf;%lf;%lf)\n\n",xAc,yAc,zAc);

//Je cherche les mineurs car je résous matriciellement cette équation
mineurUne=(yAb*zAc)-(zAb*yAc);
mineurDeux=(-1)*((xAb*zAc)-(zAb*xAc));
mineurTrois=(xAb*yAc)-(yAb*xAc);
termeIndependant=((-1*xA*mineurUne)+(-1*yA*mineurDeux)+(-1*zA*mineurTrois));

printf("L'equation cartesienne est \n\n %lf X + %lf Y + %lf Z + %lf\n\n",mineurUne,mineurDeux,mineurTrois,termeIndependant);
verification=(xA*mineurUne+yA*mineurDeux+zA*mineurTrois+termeIndependant+xB*mineurUne+yB*mineurDeux+zB*mineurTrois+termeIndependant+xC*mineurUne+yC*mineurDeux+zC*mineurTrois+termeIndependant);
printf("Verification : On injecte les coordonnees de A,B et C dans l'equation cartesienne, ce qui nous donne %lf (Si cette valeur vaut zero, alors c'est correct)\n\n",verification);

system("PAUSE");
return 0;
}

Conclusion

Merci beaucoup à mon institutrice de mathématique ! Sans elle, je ne serais pas trouver les équations cartésiennes d'un plan !
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Recherche de l'équation cartésienne d'un plan à partir de 3 points.RENOMMEZ-LE EN EXETélécharger ce fichier [Réservé aux membres club]17 219 octets

Télécharger le zip

  • signaler à un administrateur
    Commentaire de navydo le 13/06/2006 23:11:21

    Et voilà qui est mis !

    Ps: Je suis un débutant, alors doucement les critiques ^_^

  • signaler à un administrateur
    Commentaire de vecchio56 le 14/06/2006 14:51:03 administrateur CS

    Pour moi institutrice c'est à l'école primaire, et je trouve étrange qu'on y parle d'équation de plan...

  • signaler à un administrateur
    Commentaire de navydo le 14/06/2006 15:05:26

    Oui, je veux dire professeur quoi.

  • signaler à un administrateur
    Commentaire de navydo le 14/06/2006 15:05:53

    Coment trouves-tu mon programme ?

  • signaler à un administrateur
    Commentaire de luhtor le 14/06/2006 15:48:18

    Ca a l'air tellement compliqué le truc qu'elle t'a dit. En soit, faut juste un produit vectoriel pour obtenir l'équation a une constante pret. 3 multiplication en plus et tu obtiens la constante. Donc je vois pas pk tu parles de matrices et encore moins de résolution d'équation :)

  • signaler à un administrateur
    Commentaire de navydo le 14/06/2006 19:13:08

    C'est une méthode comme une autre, et je la trouve assez simple et peut se résoudre matriellement, ou j'aurais pu la faire avec des substitutions.
    ( Ps: Tu dis que c'est possible par le produit vectoriel, mais je n'ai encore vu que le produit scalaire ! )

  • signaler à un administrateur
    Commentaire de WiKonSoN le 17/06/2006 13:09:01

    je comprend pas trop ton code
    mais pour les variables initialiser a zero je crois
    que tu pers rien en les declarant globalement pour eviter les initialisation x=0, ya=0  etc
    que moi je trouve un peu chiant   Ainsi
    tu pouras ecrire
    double xA,yA,zA,xB,yB,zB,xC,yC,zC,xAb,yAb,zAb,xAc,
    yAc,zAc,mineurUne,mineurDeux,mineurTrois,termeIndependant,verification;
    s'il sont declare globalement (au fait ils sont automatiquement tous initialisez a zero

    un code sans controle d'entre de test et autre c'est pas interressant
    bon du courage
    a++

  • signaler à un administrateur
    Commentaire de luhtor le 17/06/2006 15:53:24

    Intéret de les déclarer globalement ? aucun... donc faut surtout pas déclarer ces variables globalement.
    Des variables globales, c'est vraiment quand ya pas d'autre solution. Et puis écrire "=0" c'est quand meme pas épuisant.

  • signaler à un administrateur
    Commentaire de navydo le 17/06/2006 20:05:57

    Je viens de jeter un coup d'oeuil sur ta méthode luhtor, avec le produit vectoriel, et c'est en effet beaucoup plus simple avec ta façon !

  • signaler à un administrateur
    Commentaire de vecchio56 le 17/06/2006 20:23:54 administrateur CS

    Déclarer les variables globales pour éviter de les initialiser à zéro, c'est la première fois que j'entends ca, et je pense que c'est une énormité

  • signaler à un administrateur
    Commentaire de BruNews le 17/06/2006 23:24:07 administrateur CS

    C'est tres clairement du nimporte quoi.
    La justification de variables globales est de ne pas avoir à empiler, dépiler les parms, la (les) fonction qui s'en servira aura des adresses connues à la compil au lieu d'offset sur esp, tout ceci pour dire que ça peut se justifier dans une recherche de vitesse maxi mais pas autrement.

  • signaler à un administrateur
    Commentaire de WiKonSoN le 24/06/2006 20:05:09

    salut vecchio
    c'est dans la norme ANSI/ISO
    par exemple je fais;

    int i;//i est initialise a zero et quand je ferais int i=0; globalement c'est inutile
    main () { // quand la fonction est de type int on peut laisse le int
      int age;//age a une valeur aleatoire
      cout<<"entre votre age\n";
      if(!i) // si i est 0 ce qui est est tjrs vrai
      cin>>age; // donc il entrera toujours son age
      i=1;
      return 0;
    }
    bon ca marche  
    et quand bien meme en prog de jeux ca marche ie je declare x et y globalement
    et j'affiche l"image a x et y  c'est tjrs tous en haut a partir de 0,0
    et selon moi il ne pers rien en declarant (certains) variables globalement
    a++

  • signaler à un administrateur
    Commentaire de vinc1008881 le 26/07/2006 17:57:23

    sinon il y a plus simple

    calcul des coordonées du vecteur AB et du vecteur AC
    calcul du produit vectoriel AB^AC =
    |a
    |b
    |c

    d'ou P: ax + by + cz + d = 0, d s'obtient en résolvant une equation à une inconnu (faut se servir des coord de A)

    ça nous donne : en C !!

    int main (){
    typedef struct{
    int x;
    int y;
    int z;
    } vecteur;

    typedef struct{
    int x;
    int y;
    int z;
    } point;

    point A, B, C;
    vecteur AB, AC;
    int a, b, c, d;

    /*avec scanf on entre les coordonées de points dans A B C */

    AB.x = B.x - A.x;
    AB.y = B.y - A.y;
    AB.z = B.z - A.z;

    AC.x = C.x - A.x;
    AC.y = C.y - A.y;
    AC.z = C.z - A.z;

    a = AB.y*AC.z - AB.z*AC.y;
    b = -AB.x*AC.z + AB.z*AC.x;/*attention au signe*/
    c = AB.x*AC.y - AB.y*AC.x;
    d = -a*A.x - b*A.y - c*A.z;/*on résoud*/

    printf...
    return 0;
    }

  • signaler à un administrateur
    Commentaire de nicolasdemin le 12/03/2007 17:27:33

    Si je peut me permettre :

    typedef struct{
    int x;
    int y;
    int z;
    } vecteur;

    typedef struct{
    int x;
    int y;
    int z;
    } point;
    C'est un peu redondant tout ca non?

Ajouter un commentaire

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS