IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

la couleur en fonction x, y et z


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Par défaut la couleur en fonction x, y et z
    Salut à tous,
    je veux dessiner des points en 3D (x,y,z) telque la couleur (RGB) du point dépend de ses coordonnées.
    X == représente le RED
    Y == représente le GREEN
    Z == représente le BLUE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	public Color couleur (){
    		float r= this.a.x + this.b.x + this.c.x ;
    		float g= this.a.y + this.b.y + this.c.y ;
    		float b= this.a.z + this.b.z + this.c.z ;
     
    		return new Color (r,g,b);				
    	}
    le constructeur new Color (r,g,b); que j'ai utilisé prend en paramètre le red, green et blue telque leurs valeur est comprise entre 0 et 1
    et si je vais utiliser le constructeur qui prend des int, on doit verifier si les x,y et z sont compris entre 0 et 255

    et si je vais supposer que pour toute valeur de x ou y ou z supérieure à 255 je lui affecte 255 pour la composante de couleur qui lui représente et de même pour ceux inférieure à 0, c'est pas juste car ce n'est pas proportionnel.

    mon problème c'est que j'arrive pas à trouver la densité significative d'un x ou y ou z qui est supérieur à 255 ou inferieur à 0


    merci

  2. #2
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Si tes valeurs ne sont pas bornées, il n'y a pas moyen de faire proportionnel. Si elles le sont, ta valeur inférieure devient 0, ta valeur supérieure devient 255, et pour les autres : règle de 3.

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Par défaut
    oui j'ai réfléchit à ça et je l'ai fait mais toujours il m'affiche l'erreur "color parameter outside of expected range" !!

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Par défaut
    voilà le code mais sans prendre en compte de la proportionnalité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	public Color couleur (){
    		float r= this.a.x + this.b.x + this.c.x ;
    		float g= this.a.y + this.b.y + this.c.y ;
    		float b= this.a.z + this.b.z + this.c.z ;
     
    		if (r>255)r=255;
    		if (g>255)g=255;
    		if (b>255)b=255;
    		if (r<0)r=0;
    		if (g<0)g=0;
    		if (b<0)r=0;
     
    		return new Color (r,g,b);				
    	}
    il m'affiche toujours l'erreur "color parameter outside of expected range"

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Par défaut
    oups oups!!
    c'est normal ne marche pas car r,g,b sont des float

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public Color couleur (){
    		float r= this.a.x + this.b.x + this.c.x ;
    		float g= this.a.y + this.b.y + this.c.y ;
    		float b= this.a.z + this.b.z + this.c.z ;
     
    		if (r>255)r=255;
    		if (g>255)g=255;
    		if (b>255)b=255;
    		if (r<0)r=0;
    		if (g<0)g=0;
    		if (b<0)r=0;
     
    		return new Color (r,g,b);				
    	}
    je dois les définir en int
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public Color couleur (){
    		int r= (int)this.a.x + (int)this.b.x + (int)this.c.x ;
    		int g= (int)this.a.y + (int)this.b.y + (int)this.c.y ;
    		int b= (int)this.a.z + (int)this.b.z + (int)this.c.z ;
     
    		if (r>255)r=255;
    		if (g>255)g=255;
    		if (b>255)b=255;
    		if (r<0)r=0;
    		if (g<0)g=0;
    		if (b<0)r=0;
     
     
    		return new Color (r,g,b);				
    	}

  6. #6
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut
    Je ne suis pas sûr de bien comprendre ce que tu veux, tu parles d'un point mais y en a 3 dans ton code. Pour un seul point essaye comme ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    float 	ratio_X = (MAX_X - MIN_X)/255,
    	ratio_Y = (MAX_Y - MIN_Y)/255, 
    	ratio_Z = (MAX_Z - MIN_Z)/255;
     
    int r = (int) (this.a.x * ratio_X),
        g = (int) (this.a.y * ratio_Y),
        b = (int) (this.a.z * ratio_Z);
    Et tu remplaces les MIN et MAX par les bonnes valeur bien entendu.


    ps: fais attention dans ton dernier bout de code tu cast 3 fois (par ligne), sois sûr que c'est bien ce que tu veux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. code colors, couleur en fonction de la valeur
    Par Kihmé Xs dans le forum iReport
    Réponses: 12
    Dernier message: 15/09/2012, 00h40
  2. Changer couleur en fonction d'un résultat
    Par rgdu86 dans le forum IHM
    Réponses: 7
    Dernier message: 22/02/2008, 15h28
  3. [MySQL] Changement de couleur en fonction de la var PHP
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/12/2007, 10h59
  4. Réponses: 8
    Dernier message: 16/08/2007, 16h28
  5. [VBA-E] Nom et couleur bouton fonction d'une cellule
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2006, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo