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é: 10 921 / 188

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 !
 

Fichier Zip

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

Commentaires et avis

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

Discussions en rapport avec ce code source dans le forum

definition plan dans l'espace [ par bumbob ] Bonjour,je débute en programmation c++. Je cherche à définir un plan, sans le tracer, dans l'espace. Il doit être défini de manière continue. Pour cel Problème pour mettre une Dialog Modale au premier plan [ par ZMJUVENTINO ] Salut, je travaille sur Visual C++ 6Je voudrais à partir de mon application afficher une CDialog modale et qu'elle s'affiche absolument au premier pla arriere plan(background) [ par cognac ] Avec dev4++. Comment changer la couleur de l'arriere plan (mode dos)?Merci Ecriture de fichier texte & Séparateur !! [ par Misutsu ] bonjour :)C'est la première fois que j'ai à utiliser des fichiers en C++, et je vois que l'espace sert de séparateur.Dans mon cas, j'ai besoin d'enreg Quelle API pour mettre en premier plan une autre fenetre ? [ par Kheo ] Afin d'eviter d'avoir plusieurs instance de mon soft en memoire au tout debut j'effectue un FindWindow sur le titre de mon soft. S'il ne trouve rien j Recherche : Résolution de systeme d'equation matricielle [ par julien81 ] Bonjour tlm En fait cette année j'ai un sujet pour mon projet annuel c'est de faire le prog pour resoudre un systeme d'equation avec des matrice (dime comment forcer une boite de dialogue "ouvrir" ou "enregistrer sous" au premier plan [ par nixon666 ] Je crèe une boite de dialogue "ouvrir" ou "enregistrer sous" avec la commande GetOpenFileName et GetSaveFileName, mais lorsque j'exécute la première f Non Prise en charge des espace dans ma char[20] [ par ranouf ] je suis en vc++, g un petit probleme, quand je saisis ma chaine de caractere, les epaces ne sont pas pris en compte et quand j'en fais ya tout qui foi fenêtre arrière plan [ par wanny ] Bonjour.DAns une appli, j'ai une ou plusieurs fenêtre(s) graphique (classe fille de CView).Je clique sur un menu de la mainframe pour changer des para application en arriere plan [ par flatmax ] salutje viens de faire une application (dos) et j'aimerais que cette appli tourne en arriere-plan, sans avoir besoin d'etre active.je m'explique, j'ai


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.