Triangle de penrose et classe

Résolu
ichigoZ710 Messages postés 55 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 15 novembre 2011 - 16 oct. 2007 à 22:05
The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 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
//
//////////////////////////////////////////////////////////////////////

#include "Point.h"
#include

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

using namespace std;

Point::Point(double abs,double ord)
{
    x = abs;
    y = ord;
}

void Point::Affiche()
{
    cout<<"Abscisse :"<< x <<"Ordonnée :"<< y <<endl;
}

Point::~Point()
{

}

double Point::getx(){
    return(abs);
}

void Point::setx(double x){
    x = abs;
}

double Point::gety(){
    return(ord);
}

void Point::sety(double y){
    y = ord;
}

// Point.h: Interface de la classe Point.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_POINT_H__1158B4D8_4436_4C81_AA39_2EC96B8CD085__INCLUDED_)
#define AFX_POINT_H__1158B4D8_4436_4C81_AA39_2EC96B8CD085__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class Point 
{

private :
    double x,y;

public:
    Point(double,double);
    double getx();
    void setx(double);
    double gety();
    void sety(double);
    void Affiche();
    virtual ~Point();

};

#endif // !defined(AFX_POINT_H__1158B4D8_4436_4C81_AA39_2EC96B8CD085__INCLUDED_)

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

Voilà, merci pour ceux qui pourront m'aider

Cordialement, ichigoZ710

28 réponses

ichigoZ710 Messages postés 55 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 15 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....
0
The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
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

Une autruche ne se cuit pas aux petits lardons
0
ichigoZ710 Messages postés 55 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 15 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

donc je ne vois toujours pas comment faire....
0
ichigoZ710 Messages postés 55 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 15 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;
    }
}

char TriIso::getsommet(){
    return(sommet);
}

void TriIso::setsommet(char sommet) {
   this->sommet = sommet;
}

TriIso::~TriIso()
{

}

donc comme ca vous pourrez mieux voir comment m'expliquer j'espère...

car dans cette classe triangle je ne vois pas ou appeller les méthodes pour trouver que c'est un penrose 1 ou 2

voila, merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
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

=

Une autruche ne se cuit pas aux petits lardons
0
The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
17 oct. 2007 à 17:45
OK Je look ta classe je reviens juste après

Une autruche ne se cuit pas aux petits lardons
0
The_Guardian Messages postés 317 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 19 octobre 2007 1
17 oct. 2007 à 17:47
Ok

Bon c'est pas dans triIso que tu testes si c'est un triangle penrose 1 ou 2 c'est dans la classe penrose, donc déjà là ca va pas bien :p

En gros, c'est p-e pour ca...

Une autruche ne se cuit pas aux petits lardons
0
ichigoZ710 Messages postés 55 Date d'inscription mardi 16 octobre 2007 Statut Membre Dernière intervention 15 novembre 2011
17 oct. 2007 à 18:27
Formule triangle de penrose de type 1 :

    (coté iso)/base = nbor

Formule triangle de penrose de type 2 :


    base/(coté iso) = nbor

Une fois que j'ai ces formules je les déclare où?
Constructeur de penrose?, méthode dans penrose 1 ou 2 à part?

Quel est le prototype d'une classe qui est soumis à l'héritage ainsi que le protype de son constructeur également?

je sèche un peu là je dois dire donc votre aide sera la bien venu merci,

Car après un après midi de programmation je ne sais plus vraiment ou j'en suis hihihi

Je ne sui pas la dans la soirée donc je verais les réponses demain don même si je ne réponds pas continué de me donnerdes idées si possible ^-^
0
Rejoignez-nous