ichigoZ710
Messages postés55Date d'inscriptionmardi 16 octobre 2007StatutMembreDernière intervention15 novembre 2011
-
16 oct. 2007 à 22:05
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 2007
-
17 oct. 2007 à 19:12
Bonjour à toutes et à tous,
j'aurais aimé savoir comment commencer le début de mon code en rapport avec les triangles de penrose (un triangle de penrose est un triangle isocèle ayant pour coté isocèle la longueur du nombre d'or)
Pour celà j'ai créé une classe penrose, point et triIso, n'étant qu'au début de mon aprentissage je ne maitrise pas encore le langage et j'ai donc quelques problèmes de codage...
je vous mets ci-dessous ma classe Point :
// Point.cpp: implementation de la classe Point
//
//////////////////////////////////////////////////////////////////////
J'aurais donc aimé savoir si mon constructeur était correct et si les accesseurs des membres privés de la classe aussi?
car visual studio me met 3 erreurs qui sont les suivantes :
Erreur 1 error C2440: 'return' : impossible de convertir de 'int (__cdecl *)(int)' en 'double' d:\iut\2eme année\poo 2eme année\penrosetp1\point.cpp 31
Erreur 2 error C2440: '=' : impossible de convertir de 'int (__cdecl *)(int)' en 'double' d:\iut\2eme année\poo 2eme année\penrosetp1\point.cpp 35
Erreur 3 error C2065: 'ord' : identificateur non déclaré d:\iut\2eme année\poo 2eme année\penrosetp1\point.cpp 39
Si vous pouviez me dire d'ou vient le problème se serait gentil.
qui plus est pour la suite du projet je ne sais pas comment implémenter ma classe TriIso par rapport à la classe Point....
si vous aviez des idées....
Pour penrose celà découlera de triIso car elle en hérite
ichigoZ710
Messages postés55Date d'inscriptionmardi 16 octobre 2007StatutMembreDernière intervention15 novembre 2011 17 oct. 2007 à 17:14
euh ben en gros rien, la je m'embrouille dans mes formules, je ne vois pas ou faire le test pour savoir si c'est un penrose 1 ou 2 et je ne vois pas quel test faire.
et quand bien même j'arriverais à le faire (car la j'y arrive pas...) je ne vois pas comment ma classe penrose1 ou penrose2 saurais que c'est elle dont j'ai besoin ou l'autre....
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 20071 17 oct. 2007 à 17:30
OK
question 1 : es-tu ok sur la classe triangle-isocele ?
- faut y rajouter le calcul de l'angle en lequel le triangle est isocèle et le calcul des distances, ça tu y coupes pas
car tu en as besoin pour vérifier que c'est isocèle
question 2 : es-tu ok sur la classe triangle-penrose ?
- pour le moment tu en as qu'une seule classe penrose avec une variable "type" qui dit si c'est type 1 ou type 2
et pour savoir si c'est type 1 ou type 2 ben tu utilises la formule que tu m'as donnée ou bien tu utilises les angles droits/obtus
mais ça ça se fait dans le constructeur de toutes façons donc les parametres d'un triangle de penrose sont valides si
(1) le triangle abc est isocèle
(2) le rapport des distances ab/bc (par exemple, mais ça dépend en quel angle le triangle est isocèle ET si tu es dans un type 1 ou 2) est égal au nombre d'or
petite remarque :
attention à l'égalité x == nombre-or- vaut mieux faire abs( x - nombre-or ) <epsilon
ichigoZ710
Messages postés55Date d'inscriptionmardi 16 octobre 2007StatutMembreDernière intervention15 novembre 2011 17 oct. 2007 à 17:40
non justement on ne doit pas calculer l'angle avant en faite :
il faut juste faire la formule pour savoir si c'est un penrose de type 1 ce qui veut dire qu'il sera aigu et sinon c'est un penrose de type 2 et donc il sera obtus.
Je ne vois pas comment faire la variable type qui dit si oui ou non c'est un penrose, comment à partir de la classe TriIso la varible type pourrait changée?
mais je le dis bien il n'y a pas de calcul d'angle à faire en fait
ichigoZ710
Messages postés55Date d'inscriptionmardi 16 octobre 2007StatutMembreDernière intervention15 novembre 2011 17 oct. 2007 à 17:44
Voila ma classe TriIso :
TriIso::TriIso(Point a,Point b,Point c)
{
double Nbor=1,618033;
if ((a.Compoint(b)==0)&&(b.Compoint(c)==0)&&(c.Compoint(a)==0)) //si des point tous != alors..
{ //...c'est un triangle simple
cout << "Ces points forment un triangle ";
if ((a.Calclong(b))==(b.Calclong(c))){//si ab=bc -> sommet=b
sommet = 'b';
cout << "isoc\x8Ale en b" << endl;
if(((a.Calclong(b))/(c.Calclong(a)))== Nbor){
}
}
else if ((b.Calclong(c))==(c.Calclong(a))){//si bc=ca -> sommet=c
sommet = 'c';
cout << "isoc\x8Ale en c" << endl;
}
else if ((c.Calclong(a))==(a.Calclong(b))){//si ca=ab -> sommet=a
sommet = 'a';
cout << "isoc\x8Ale en a" << endl;
}
else{
cout << "non isoc\x8Ale" << endl;
}
}
else{
cout<<"Ce n'est pas un triangle"<<endl;
}
}
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 20071 17 oct. 2007 à 17:44
Re,
ben tu as donné tout à l'heure la formule
_ tu as dit que si ab/bc=nombre-or
non?
Alors c'était un triangle penrose 1 en gros OK
- là ta question n'est pas une question de programmation mais une question de math
- donne la définition et on fait la formule au pire