Pure_anaglyphe

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
zaphod_b
Messages : 76
Inscription : mar. 09/déc./2014 20:02

Re: Pure_anaglyphe

Message par zaphod_b »

Salut,

Probablement, que tu y a déjà pensé mais bon :

ce code :

Code : Tout sélectionner

If t=(Green(coul_obs) And Blue(coul_obs)=t) And (Red(coul_obs)<Green(coul_obs) Or Red(coul_obs)<Blue(coul_obs))
EndIf 
génère l'erreur décrite.

ce code :

Code : Tout sélectionner

If Bool((Green(coul_obs) And Blue(coul_obs)=t) And (Red(coul_obs)<Green(coul_obs) Or Red(coul_obs)<Blue(coul_obs)))
EndIf
passe sans problème dans PB 5.51 X64 et x86.

my 2 cents....
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Pure_anaglyphe

Message par falsam »

@zaphod_b : Hum pas certain que ta réponse soit bonne

L'erreur généré par l'IDE de PureBasic 5.51 est dans la première partie du code.

Code : Tout sélectionner

If t=(Green(coul_obs) And Blue(coul_obs)=t) 
EndIf
ce qui donne
Comparisons (=, <, >, =< and >=) are only supported with keywords like If, While, Until or within Bool().
Ta solution consiste donc à faire une comparaison booléenne.

Code : Tout sélectionner

If Bool(Green(coul_obs) And Blue(coul_obs)=t) 
EndIf
et effectivement il n'y a plus d'erreur de compilation. Mais ce qui ne veut pas dire que le résultat espéré soit bon.

Améliorons le code avec quelques init de variables.

Code : Tout sélectionner

coul_obs = RGB(255, 0, 0)
t=0

If Bool(Green(coul_obs) And Blue(coul_obs)=t) 
  Debug "yeah"   
EndIf
Sauf erreur ou omission de ma part : Pas de "Yeah"

J'ai bien Bool(0 and 0 = 0) mais ça ne donnera pas comme résultat la constante #True

La condition que Zorro souhaite est pourtant bien rempli, Mais il y a un souci lié aux parenthèses.

Une variable t ne peut pas être égale à deux valeurs au même moment.

Si on reprend le code code de Zorro

Code : Tout sélectionner

coul_obs = RGB(255, 0, 0)
t=0

If t=(Green(coul_obs) And Blue(coul_obs)=t) 
  Debug "yeah"  
EndIf
on aurait t=(0 And 0=0) !! Tilt same player shoot again

La solution consisterait à supprimer la première parenthèse et la dernière parenthèse.

Code : Tout sélectionner

coul_obs = RGB(255, 0, 0)
t=0

If t=Green(coul_obs) And Blue(coul_obs)=t 
  Debug "yeah"  
EndIf
la condition est dans ce cas plausible

t = 0 and 0 = t

YeahHHHHhhhh^^
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Pure_anaglyphe

Message par Zorro »

cette partie de code est un filtre

qui consiste a modifier les couleurs qui sont proche de celles des lunettes Anaglyphe
(Rouge/Cyan)

lorsque qu'une couleur de l'image est proche de ces deux couleurs (et ici particulierement il s'agit du traitement pour le Cyan )
je modifie cette couleur pour "l'eloigner" de la couleur des lunettes ... ce qui a pour resultat d'etre visible par les lunettes Anaglyphes

en effet, si on doit mettre en Anaglyphe une image contenant du rouge par exemple , celui ci paraitra "noir" dans la partie cyan des lunettes
et "blanc" (gris clair) dans la partie rouge des lunettes , ce qui occasionne une sorte de Flash désagreable a la vue (regardez les 2 doigts repliés de la main gauche de Spiderman)
en modifiant ce rouge pour l’éloigner de la couleur des lunettes on concerve la dominante rouge , tout en gagnant un confort a la vue ....

(pareille pour la couleur Cyan ) ....

exemple avec une image contenant du rouge
rappel, avec les lunettes Anaglyphes, il faut s'eloigner d'au moins 50 cm de l'ecran pour aprécier (et plus si c'est un grand ecran )
les anaglyphe s'apprécient mieux en etant loin .... il faut que les yeux converges ...

Sans traitement :
Image

Avec Traitement (de l'extrait de code ci dessus )

Image

bien sur pour apprécier il faut des lunettes Anaglyphes ... mais a l'oeil on vois bien la difference opérée sur le Rouge ...
(ce qui au passage prouve que mon filtre fonctionne en Purebasic 5.30 )



pour le code, mon Filtre fonctionne tres bien avec la Version 5.30 de Purebasic , donc c'est pas une erreur de logique
mais bien une erreur Lié a Purebasic !
qui dans les versions actuelle , ne suporte plus cette façon de faire .... et c'est bien dommage
je considere qu'une evolution doit apporter de la simplicité, au lieu de Brider ... mais c'est mon point de vue ...

en clair , avant ça marchait, maintenant, ça ne marche plus !!

la fonction bool c'est bien beau, mais je ne vois pas en quoi ajouter des fonctions, qui etaient inutiles avant,
fait que le Purebasic s'améliore !!

(tout en respectant le travail de fred , là n'est pas le propos ... )
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Répondre