PureDélire ou Fun potentiel ?
-
- Messages : 2194
- Inscription : jeu. 27/janv./2005 19:07
@nico
Il faut essayer , c'est sûr que tomber d'emblée sur sur image hyper "nette", serait un sacré coup de bol
C'est encore pour cela que mesurer à la volée un écart moyen serait d'une grande aide.
Il suffirait de se positionner sur une image connue et de "sauter" sur l'environnement possible de la suivante
Et par bonds successifs de plus en plus petits de mettre au point la "netteté"
.
Une chose est sûre c'est que toutes ces images existent
Il suffit de les débusquer
Il faut essayer , c'est sûr que tomber d'emblée sur sur image hyper "nette", serait un sacré coup de bol
C'est encore pour cela que mesurer à la volée un écart moyen serait d'une grande aide.
Il suffirait de se positionner sur une image connue et de "sauter" sur l'environnement possible de la suivante

Et par bonds successifs de plus en plus petits de mettre au point la "netteté"
.
Une chose est sûre c'est que toutes ces images existent

Il suffit de les débusquer

Quelque chose me dit qu'il ya bug dans l'énoncé du problème (si j'ai bien tout compris)....
En gros ce serait faire une grosse boucle qui afficherai successivement toutes les images possibles qu'un écran (par ex. de 800x600x24bits. Qui est un nombre fini!) peut afficher, et comme le dis FliperJ on verrait apparaitre un jour ou l'autre la joconde, la photo de ma grand-mère, .... le passé et le futur de tout ce qui éxiste ou n'existe pas en somme !
En résumé l'infini... Y'a pas comme un bug là?
Ou alors l'infini se résume à un nombre de 2 880 000 chiffres en résolution 800x600....
En gros ce serait faire une grosse boucle qui afficherai successivement toutes les images possibles qu'un écran (par ex. de 800x600x24bits. Qui est un nombre fini!) peut afficher, et comme le dis FliperJ on verrait apparaitre un jour ou l'autre la joconde, la photo de ma grand-mère, .... le passé et le futur de tout ce qui éxiste ou n'existe pas en somme !
En résumé l'infini... Y'a pas comme un bug là?
Ou alors l'infini se résume à un nombre de 2 880 000 chiffres en résolution 800x600....
l'affichage des différents écrans n'est pas linéaire , désolé , mais si tu es assez patient et attentif ,tu devrais voir défiler la joconde sur le cheval blanc d'henri IV,
Ton idée est séduisante en tout cas 

Code : Tout sélectionner
; --- Initialisation ---
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Erreur", "Impossible d'initialiser DirectX 7 Ou plus", 0)
End
EndIf
; --- Plein écran ---
#MaxX= 800
#MaxY = 600
#ScreenDepth = 32
If OpenScreen(#MaxX,#MaxY,#ScreenDepth,"Essai Pathfinding") = 0
MessageRequester("Erreur", "Impossible d'ouvrir l'écran ", 0)
End
EndIf
Repeat
ClearScreen(0,0,0)
;/ état du clavier
ExamineKeyboard()
StartDrawing(ScreenOutput())
For v=0 To #MaxY-1
For u=0 To #MaxX-1
Plot(u,v,RGB(Random(255),Random(255),Random(255)))
Next u
Next v
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

L'oeil humain dispose d'un certain nombre de capteurs (j'ai su le nom savant de la chose..), chacun capable de différencier un certain nombre de nuances de couleurs...
Donc le nombre d'images différentes qu'on est capable de percevoir n'est pas infini, et il est sûrement calculable
Sinon, codé à l'arrache, un prog qui additionne 2 image de 64*64*1 (bicolore noir et blanc, essayez de trouver des images qui passeront bien sous ce format).
Ça fait déjà la somme de 2 entiers sur 4096 bits.
Donc le nombre d'images différentes qu'on est capable de percevoir n'est pas infini, et il est sûrement calculable

Sinon, codé à l'arrache, un prog qui additionne 2 image de 64*64*1 (bicolore noir et blanc, essayez de trouver des images qui passeront bien sous ce format).
Ça fait déjà la somme de 2 entiers sur 4096 bits.
Code : Tout sélectionner
UseJPEGImageDecoder()
UsePNGImageDecoder()
#nbPix=64*64
Dim ImBuf.b(1,#nbPix/8-1)
Procedure.l ChooseImage(NumImg.l)
File$=OpenFileRequester("Choisissez une image","","bmp,jpg,png|*.bmp;*.pgn;*.jpg;*.jpeg",0)
If LoadImage(NumImg,File$)
ResizeImage(NumImg,64,64)
If StartDrawing(ImageOutput())
For y=0 To 63
For x=0 To 56 Step 8
pixpak=0
For indx=0 To 7
pixpak<<1
coul=Point(x+indx,y)
If Red(coul)+Blue(coul)+Green(coul)>=3*128
pixpak|1
Plot(x+indx,y,$FFFFFF)
Else
Plot(x+indx,y,0)
EndIf
Next
ImBuf(NumImg,x/8+y*8)=pixpak
Next
Next
StopDrawing()
ProcedureReturn 1
EndIf
EndIf
EndProcedure
Procedure AddImg()
For pix=#nbPix/8-1 To 0 Step -1
som+(ImBuf(0,pix)&255)+(ImBuf(1,pix)&255)
ImBuf(0,pix)=som
som>>8
Next
If CreateImage(2,64,64) And StartDrawing(ImageOutput())
For y=0 To 63
For x=0 To 63
Plot(x,y,$FFFFFF*((ImBuf(0,y*8+(x>>3))>>(7-(x&%111)))&1))
Next
Next
StopDrawing()
EndIf
EndProcedure
If InitSprite() And ChooseImage(0) And ChooseImage(1) And OpenWindow(0,0,0,4*64,3*64,#PB_Window_SystemMenu|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget,"Somme d'images") And OpenWindowedScreen(WindowID(),0,0,4*64,3*64,1,0,0)
AddImg()
Repeat
If StartDrawing(ScreenOutput())
DrawImage(UseImage(0),32,32)
DrawImage(UseImage(1),160,32)
Locate(128,64) : DrawText("+")
Locate(64,128) : DrawText("=")
DrawImage(UseImage(2),96,100)
StopDrawing()
FlipBuffers()
EndIf
Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
-
- Messages : 2194
- Inscription : jeu. 27/janv./2005 19:07
@comtois
Bel essai
Effectivement si j'attends un petit peu je devrais apercevoir quelque chose !
(si le random ne tourne pas en boucle et ne laisse pas des trous là ou justement se trouve le cheval blanc)
Mais je ne contrôle rien là !
C'est le "vol de la mouche" à l'aveuglette
Il faut "aider" la machine !
A suivre...
@filperj
Bien joué!
Sûr on peu comparer la surface du fond de la rétine avec ses cônes et batonnets à un "écran" !
Bravo ! C'est une surface finie donc on peut donc en calculer le nombre de vue potentiellement "visibles" !
Le truc de se servir d'une images comme "base" de départ est séduisante
Comme cela on n'a pas à chercher un départ au hasard
C'est aussi plus facile pour "stocker" un "écran"
A suivre...
Meci d'essayer ce trip visuel
Bel essai

Effectivement si j'attends un petit peu je devrais apercevoir quelque chose !
(si le random ne tourne pas en boucle et ne laisse pas des trous là ou justement se trouve le cheval blanc)

Mais je ne contrôle rien là !

C'est le "vol de la mouche" à l'aveuglette

Il faut "aider" la machine !
A suivre...
@filperj
Bien joué!
Sûr on peu comparer la surface du fond de la rétine avec ses cônes et batonnets à un "écran" !
Bravo ! C'est une surface finie donc on peut donc en calculer le nombre de vue potentiellement "visibles" !
Le truc de se servir d'une images comme "base" de départ est séduisante
Comme cela on n'a pas à chercher un départ au hasard
C'est aussi plus facile pour "stocker" un "écran"
A suivre...
Meci d'essayer ce trip visuel

Dernière modification par Frenchy Pilou le lun. 31/janv./2005 20:59, modifié 3 fois.
je suis partie du prg de comtois
pour en faire une version avec image chargée !
je recupere les points de couleurs de l'image
pour ensuite els afficher de facon aleatoire !!
je vais vois si je peux faire un system de glisse
mais je ne garantie rien !!
a savoir que mon dernier jours de connection c'est en principe demain !
(a moins qu 9 tel me coupe ce soir a minuit ! )
donc je serai moins present !!
ça va faire des vacances au Soldat inconnu
bon j'y retourne
le code pour l'instant
pour en faire une version avec image chargée !
je recupere les points de couleurs de l'image
pour ensuite els afficher de facon aleatoire !!
je vais vois si je peux faire un system de glisse
mais je ne garantie rien !!
a savoir que mon dernier jours de connection c'est en principe demain !
(a moins qu 9 tel me coupe ce soir a minuit ! )
donc je serai moins present !!
ça va faire des vacances au Soldat inconnu

bon j'y retourne

le code pour l'instant
Code : Tout sélectionner
UseJPEGImageDecoder()
UseJPEGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
; --- Initialisation ---
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Erreur", "Impossible d'initialiser DirectX 7 Ou plus", 0)
End
EndIf
NomFichier$ = OpenFileRequester("charge une image", "C:\", "*.jpg;*.tiff;*.bmp;*.tga", 0 )
If LoadImage(1, NomFichier$)
Hauteur = ImageHeight()
Largeur = ImageWidth()
prof = ImageDepth()
Dim couleur (10000,10000)
; --- Plein écran ---
If OpenScreen(800,600,32,"Essai truc biz") = 0
MessageRequester("Erreur", "Impossible d'ouvrir l'écran ", 0)
End
EndIf
ImageID = UseImage(1)
; recup les points de l'image de reference
StartDrawing( ImageOutput() )
DrawImage(ImageID, 0, 0 , Largeur, Hauteur)
For h=0 To Hauteur-1
For l=0 To Largeur-1
couleur(h,l) = Point(l, h)
Next l
Next h
StopDrawing()
; lance l'affichage aleatoires ddes points recupéré
Repeat
;/ état du clavier
ExamineKeyboard()
StartDrawing( ScreenOutput() )
For h=0 To Hauteur-1
For l=0 To Largeur-1
Plot(Random(Largeur)+1,Random(Hauteur)+1, couleur(h,l) )
Next l
Next h
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
EndIf
-
- Messages : 2194
- Inscription : jeu. 27/janv./2005 19:07
@dobro
Plus de connection ? Mais c'est la fin du monde pour un internaute
Sinon pour le code
Même remarque que pour comtois, le hasard pur n'est pas la solution!
Reafficher aléatoirement les points n'a quasi aucune chance de réafficher quelque chose de plausible puisque justement on "touille"
Il faut "diriger" la machine!
Merci de l'essai
En tout cas je vois qu'il est facile de "bricoler" en très peu de lignes des images avec le Pure
Mon chèque va bientôt s'envoler vers FEGERSHEIM
PS petite question
On n'est pas obliger de "finir" un programme par un "END" syntaxique (ou autre)
Plus de connection ? Mais c'est la fin du monde pour un internaute

Sinon pour le code
Même remarque que pour comtois, le hasard pur n'est pas la solution!
Reafficher aléatoirement les points n'a quasi aucune chance de réafficher quelque chose de plausible puisque justement on "touille"

Il faut "diriger" la machine!
Merci de l'essai

En tout cas je vois qu'il est facile de "bricoler" en très peu de lignes des images avec le Pure

Mon chèque va bientôt s'envoler vers FEGERSHEIM

PS petite question
On n'est pas obliger de "finir" un programme par un "END" syntaxique (ou autre)
Dernière modification par Frenchy Pilou le lun. 31/janv./2005 21:00, modifié 1 fois.
ben non !!On n'est pas obliger de "finir" un programme par un "END" synthaxique (ou autre)
mais le mettre c'est plus mieux !

je te conseille de passer par CB sur le site de pure !Mon chèque va bientôt s'envoler vers FEGERSHEIM Cool
car tu pourra recuperer ta version complete des ce soir (telechargement )

y a pas eu de probleme niveau CB avec le purebasic et le site de FRED

pour l'aleatoire je suis d'accord , mais faut bien commencer par quelques choses !
et c'est plus facile a metre en oeuvre !!

d'autre part , j'ai toujours pas trop compris le truc

voici ci dessous le meme prg
un peut modifier et je pense que c'est une bonne base pour debuter !!
Code : Tout sélectionner
UseJPEGImageDecoder()
UseJPEGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
; --- Initialisation ---
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Erreur", "Impossible d'initialiser DirectX 7 Ou plus", 0)
End
EndIf
NomFichier$ = OpenFileRequester("charge une image", "C:\", "*.jpg;*.tiff;*.bmp;*.tga", 0 )
If LoadImage(1, NomFichier$)
Hauteur = ImageHeight()
Largeur = ImageWidth()
prof = ImageDepth()
Dim couleur (10000,10000)
; --- Plein écran ---
If OpenScreen(800,600,32,"Essai truc biz") = 0
MessageRequester("Erreur", "Impossible d'ouvrir l'écran ", 0)
End
EndIf
ImageID = UseImage(1)
StartDrawing( ScreenOutput() )
DrawText(" veuillez patienter ...")
StopDrawing()
FlipBuffers()
; recup les points de l'image de reference
ResizeImage(1, 320, 200) ; redimentionne l'image
Hauteur = ImageHeight() ; une image plus petite sera plus rapide a traiter !
Largeur = ImageWidth()
StartDrawing( ImageOutput() )
DrawImage(ImageID, 0, 0 , Largeur, Hauteur)
For h=0 To Hauteur-1
For l=0 To Largeur-1
couleur(h,l) = Point(l, h)
Next l
Next h
StopDrawing()
ClearScreen(0, 0, 0)
; lance l'affichage aleatoires des points recupérés
Repeat
;/ état du clavier
ExamineKeyboard()
StartDrawing( ScreenOutput() )
For h=0 To Hauteur-1
For l=0 To Largeur-1
Plot(Random(l),h, couleur(h,l) )
Next l
Next h
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
EndIf
-
- Messages : 2194
- Inscription : jeu. 27/janv./2005 19:07
Quelques informations "Physiques"
Tout sur l'oeil
@filperj
Bâtonnets (130 millions) cônes (6-7 millions) sur la rétine
donc grosso modo un "écran de 11 600*11 600 pixels" fortiche l'oeil
http://www.essilor.fr/RESSOURCES-SCIENT ... mie01.html
En moyenne, nous ne sommes pas capables de distinguer plus de 350 000 couleurs en même temps
http://www.tsi.enst.fr/tsi/enseignement ... r/rgb.html
200 nuances dans un dégradé de couleur pour qu'il soit perçu de comme continu.
http://www.arnaudfrichphoto.com/calibra ... uleurs.htm
@Dobro
Cela va venir, il n'y a pas le feu au lac
Si tu regardes mon exemple des 10*10 pixels
Il suffit simplement de "parcourir" cette liste, rien de sorcier
Bien sûr le faire ligne après ligne est idiot, il faut le faire avec un "pas" (qui peut varier) c'est "l'accélérateur"
Autre chose, cette "liste triée" est purement conceptuelle, pour des raisons de rapidité il faut peut-être connaître la structure de la mémoire vidéo, et là je doute qu"elle soit simplement organisée comme une liste linéaire bien classée
à suivre...
Tout sur l'oeil
@filperj
Bâtonnets (130 millions) cônes (6-7 millions) sur la rétine
donc grosso modo un "écran de 11 600*11 600 pixels" fortiche l'oeil

http://www.essilor.fr/RESSOURCES-SCIENT ... mie01.html
En moyenne, nous ne sommes pas capables de distinguer plus de 350 000 couleurs en même temps
http://www.tsi.enst.fr/tsi/enseignement ... r/rgb.html
200 nuances dans un dégradé de couleur pour qu'il soit perçu de comme continu.
http://www.arnaudfrichphoto.com/calibra ... uleurs.htm
@Dobro
j'ai toujours pas trop compris le truc
Cela va venir, il n'y a pas le feu au lac

Si tu regardes mon exemple des 10*10 pixels
Il suffit simplement de "parcourir" cette liste, rien de sorcier

Bien sûr le faire ligne après ligne est idiot, il faut le faire avec un "pas" (qui peut varier) c'est "l'accélérateur"
Autre chose, cette "liste triée" est purement conceptuelle, pour des raisons de rapidité il faut peut-être connaître la structure de la mémoire vidéo, et là je doute qu"elle soit simplement organisée comme une liste linéaire bien classée

à suivre...
c'est marrant car sur ce principe y apas longtemps
j'ai fait un programme qui lit des fichier (n'importe quoi)
et joue de la musique en fonction des valeur contenu dans le fichier !
regarde le topic intitulé "Le chant des lettres"
la : http://purebasic.hmt-forum.com/viewtopi ... 1342#21342
j'ai fait un programme qui lit des fichier (n'importe quoi)
et joue de la musique en fonction des valeur contenu dans le fichier !
regarde le topic intitulé "Le chant des lettres"

la : http://purebasic.hmt-forum.com/viewtopi ... 1342#21342
-
- Messages : 2194
- Inscription : jeu. 27/janv./2005 19:07
@Dobro
Oui je l'avais vu ce "chant des sphères" musiques célestes s'il en est
Essaie avec les 100 000 premières décimales de pi et pas de fausses notes
je pense qu'il vaut mieux dzipper avant
http://206.145.80.239/zbc/attachment.ph ... entid=4863 50 kb
Ps on ne peut rien envoyer sur le forum ,images, fichiers, en direct....?
Oui je l'avais vu ce "chant des sphères" musiques célestes s'il en est

Essaie avec les 100 000 premières décimales de pi et pas de fausses notes

je pense qu'il vaut mieux dzipper avant

http://206.145.80.239/zbc/attachment.ph ... entid=4863 50 kb

Ps on ne peut rien envoyer sur le forum ,images, fichiers, en direct....?