begin process at 2010 03 18 20:14:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :12 171 / 200

Auteur : navydo

Ecrire un message privé
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

Les Membres Club peuvent 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


 Sources de la même categorie

Source avec Zip TRANSFORMER UN ENTIER EN DEUX NOMBRES COMPOSÉ DES MEMES CHIF... par thebroyeur
CALCULE LOG(X) par tagtog
Source avec Zip Source avec une capture ALGORITHME DE TRI D'UN TABLEAU PAR ORDRE CROISSANT OU DÉCROI... par Thuzhen
Source avec une capture CALCUL DE VARIANCE par Minilogus
Source avec une capture GÉNÉRATEUR DE CLÉS SUR 26 DIGITS AU FORMAT HEXADÉCIMAL par besilent

 Sources en rapport avec celle ci

Source avec Zip RESOLUTION D'EQUATION DE 1 A 4 DEGRES par sheorogath
SSCANF POUR SUPPRIMER DES ESPACES (COMME TRIM()) par darkpoulpo
Source avec Zip Source avec une capture GRAPHEUR 2D par BCedric
Source avec Zip Source avec une capture ODE ET PORTRAIT DE PHASE par JCDjcd
Source avec Zip SKINNED MESH par Itsuki2

Commentaires et avis

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 ^_^

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...

Commentaire de navydo le 14/06/2006 15:05:26

Oui, je veux dire professeur quoi.

Commentaire de navydo le 14/06/2006 15:05:53

Coment trouves-tu mon programme ?

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 :)

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 ! )

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++

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.

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 !

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é

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.

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++

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;
}

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 Mette une image arrière plan du DOS [ par yabross ] Slt tout le monde, je suis débutant en c++, j'ai une question à vous posez, est-il de mette une image en arrière plan du DOS avec le dev c++, si possi lancer une execution en arrier plan [ par samir201 ] salut tous le monde, je veux devlopper un programme qui s'execute en arrier plan (comme les processus) ,sachant que mon programme contient une foncti Savoir si une fenêtre est au 1er plan [ par Lustuc ] Il y a plein de topics sur "comment forcer une fenêtre à être au 1er plan?". Pour ma part, je recherche une fonction qui me permet, à partir du ha rectangle en premier plan [ par minetgrostiti ] Bonjour En c#: J'ai une pictureBox incluant une image le tout dans Form1 Je crée un rectangle (DrawRectangle) pour délimiter une zone de contrôle sur Allocation mémoire [ par cogno ] Bonjour à tous. Je me posais les deux questions suivantes: 1/ Quand on parle de la pile et du tas, c'est un espace mémoire alloué dans la RAM? 2/ Si surpression espace [ par fadiam ] Bonjour à tous Je cherche le moyen de supprimer des espaces de telle sorte à ce qu'il n'en reste un. Lorsque l'on entre une chaine de caractère : "co arriere plan(background) [ par cognac ] Avec dev4++. Comment changer la couleur de l'arriere plan (mode dos)?Merci


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales