Francky23012301
Messages postés400Date d'inscriptionsamedi 6 août 2005StatutMembreDernière intervention11 février 2016
-
1 mars 2007 à 02:45
Bad Compagny
Messages postés1Date d'inscriptionlundi 14 mai 2007StatutMembreDernière intervention14 mai 2007
-
14 mai 2007 à 03:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Bad Compagny
Messages postés1Date d'inscriptionlundi 14 mai 2007StatutMembreDernière intervention14 mai 2007 14 mai 2007 à 03:33
bravo pour le code source!
p314
Messages postés1Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention15 mars 2007 15 mars 2007 à 15:58
10/10 pour la source,
je me demandais, pour le tableau avec les faces, s'il ne vallais pas mieux utiliser des quaternions, genre representer le cube en 3D dans la memoire et l'afficher en pseudo-3D, ce qui permetrais de se passer du cube en papier.
Ca donnerais un tableau pour les 6 faces, avec un vecteur pour la direction de chaque face, et un vecteur pour l'orientation celles-ci.
Et il suffirais de faire une rotation de chaque vecteur pour tourner le cube, et de trouver le bon vecteur a afficher (par ex. (0,0,1,0)) dans la liste des directions, son homologue servant pour definir l'orientation de la face avec par ex. ses 2 premieres coordonées (x,y,#,#).
C'est lourd mais ca peux servir a faire évoluer le moteur, pour afficher 3 faces du cube ou autre..
Finalement je vais le coder pour voir... :)
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 5 mars 2007 à 18:07
Bah 3D ou 2D c'est la grande question.
la 3D permet d'obtenir des effets qui demanderais des centaines de lignes de codes en 2D.
l'avantage de la 3D (DirectX ou OpenGL (de preference)) c'est les performances a l'affichage et toute les fonctions de bases deja disponible, performantes, optimisées etc.
ce sont deux monde a part et puis le resultat est tellement bien reussi qu'on ne peu rien dire sur cela.
pas d'erreur de texture, effet 3D reussi, on pourrait juste demander un affichage aleatoire des texture sur les faces des cubes :
procedure TForm1.Shp_CreerMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Index,StartIndex : Integer;
UnJpeg : TJPEGImage;
NomFichier, ImgPath : String;
begin
UnCube := TCube.Create(self);
with UnCube do
begin
Virtuel := Rbt_Virtuel.Checked;
Parent := Self;
Taille := StrToInt(Edt_Taille.Text);
Vitesse := 50 - Tkb_Vitesse.Position;
Top := 30;
Left := 270;
UnJpeg := TJPEGImage.Create;
try
StartIndex := Random(100);
AppPath := ExtractFilePath(ParamStr(0)) + 'cubeengine_images\';
for Index := 0 to 5 do
begin
NomFichier := ImgPath+ 'Ima' + IntToStr((StartIndex + Index) mod 6) + '.jpg';
if FileExists(NomFichier)then
begin
UnJpeg.LoadFromFile(NomFichier);
ChargerJpg(Index, UnJpeg);
end;
end;
finally
UnJpeg.Free;
end;
end;
end;
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 4 mars 2007 à 15:56
@ Debiars : Génial, le Debiar's Cube!
Et tu vas commencer par un prototype en papier? lol
@ florenth : Merci pour tes remarques.
Bein oui, c'est pour ça que je poste. Pas pour ma libido... lol
-Alors, je mets de l'ordre dans mes idées. Si j'ai bien compris, le Owner (la fiche) fera appel, lors de sa destruction, au destructor de chaque cube et ainsi tous les Bitmap seront libérés en cascade. Donc, pas la peine de faire explicitement appel au destructor quand il y a un Owner. C'est bien ça, Florent?
Mais n'est-ce pas un bon reflex que de libérer tout ce qu'on crée, même si c'est superflu? Je croyais que c'était un principe en POO. Quelle est la bonne attitude à adopter, finalement?
-Les procédures imbriquées apportent des avantages au niveau de la portée des variables et permettent le copier-coller d'une seule procédure lors de la conception. Mais c'est vrai que ça ne facilite pas la lecture, et c'est important quand on poste. Je ne le ferai donc plus.
-La POO, c'est passionnant, c'est vrai! Et je recommande à tous les débutants de s'y mettre le plus tôt possible. Programmer, n'est-ce pas organiser sa pensée pour tenter de mettre le monde réel en phrases binaires? D'où cette intense satisfaction de se sentir approcher la condition divine. Et la POO facilite grandement cela. Il y a un moment où tout s'éclaire comme une révélation, et je souhaite à tous les programmeurs débutants de connaître cette sensation.
-Minute cubiturique: Pour moi, la vraie programmation 3D n'existe que dans l'info embarquée des machines-outils modernes. Ici, c'est de la pseudo 3D. Et je crois que c'est bien plus compliqué que la vraie 3D.
re-@ Debiars : N'abandonne surtout pas le cinéma pour les cubes, Jean-Pierre!!!
( Les autres comprendront bientôt : Debiars a qq chose sur le feu pour vous ;)
Je viens de tomber sur ce code et je n'ai qu'une chose à dire: bravo !
Y'a de l'idée, une très bonne réalisation, et même un peu d'ASM !
J'ai cependant quelques remarques (après tout, c'est ce que tu voulais):
- Tu n'es pas obligé de libérer explicitement les TCube que tu crée puisque que spécifie le Owner dans le constructeur. C'est donc la fiche qui libère automatiquement les composants.
- Tu a pas mal de procédures imbriquées dans une seule, ce serait plus simple à comprendre si elles étaient toutes indépendantes.
En tout cas, bienvenue dans le fabuleux monde de la POO ! Plein de bugs et nuit blanches en perspectives !! ^^ lol
Juste un truc:
"Pour faire simple, je dirai que ce sont des cubes 2D qu'on dirait des cubes 3D."
Mais non ! C'est de la vraie 3D que tu viens de coder là !
La troisième dimension, c'est en fait l'art de la représenter en 2D !"(bon, je vous laisse méditer là... encore de la cubiture...)
++
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 4 mars 2007 à 10:43
Effectivement, me voilà en pleine soucitude...
Je suis déjà en train de me fouiller pour trouver à quelle sauce accomoder ce moteur là.
Je vois bien un gros cube avec des carrés de toutes les couleurs (6 par exemple) et qu'on ferait tourner par tranche pour essayer de rassembler toutes les couleurs identiques sur la même face...génial, non?
@Carib : le coup du petit cube en papier, j'ai déjà utilisé également!
... et je n'ai même pas eu à aller sur la grande muraille pour ça! lol
@Japee: je constate que les allocutions d'une pseudo tête couronnée t'ont marquées
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 2 mars 2007 à 16:37
Woui, Japee.
La cubiture? Ce serait pas encore un truc relevant de la bistromatique, ça?
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 2 mars 2007 à 14:06
Bah, Caribensila : la cubiture* de la sphère... on n'a pas fini d'épiloguer là-dessus !
* ça fait un peu gros mot...
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 2 mars 2007 à 03:58
Y'a pas de mal, Cirec.
Les cubes, on croit tous bien les connaître, mais quand on code pour eux, on se rend vite compte que c'est des pourris.
...
Enfin, c'est ma conviction, now. ;)
j'avais pas remarqué que les images étaient toujours dans le bon sens en mode Réel. Désolé ... ;)
Effectivement pas besoin, dans ce cas, d'éffectuer une rotation.
Remarque je l'avais noté "(je ne sais pas si c'est normal ou non)"
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 1 mars 2007 à 23:39
Merci les gars.
@ Cirec
Pourquoi voudrais-tu faire pivoter une image qui est dans le bon sens?
C'est la seule raison d'être des cubes virtuels : toujours présenter des images dans le bon sens.
Tu pensais à quelque chose qui pourrait être utile?..
ça a l'air bien tout ça ... avec une approche originale
juste un truc (je ne sais pas si c'est normal ou non) en mode réel si je clique en bas à droite le cube éffectue une rotation sur lui même d'un quart de tour vers la droite mais en virtuel il ne se passe rien ?
en tous cas c'est réussit ... bravo
@+
Cirec
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 1 mars 2007 à 20:44
J'ai juste testé rapidos le truc..
ben, c'est très bon et ya du boulot !
@+
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 1 mars 2007 à 03:22
:)
T'es gentil, Francky. Heureux que ça te plaise.
Merci.
Mais Monsieur Debiars est, j'espère, entre d'autres, notre maître à tous.
Et, avec moi, il n'a pas trop de soucis à se faire...
Francky23012301
Messages postés400Date d'inscriptionsamedi 6 août 2005StatutMembreDernière intervention11 février 20161 1 mars 2007 à 02:45
Alors objectivement : c'est génial. L'effet et le rendu sont bleuffant. Et le tout est fluide.
Coté code : ben rien à redire c'est du grand art, Monsieur Débiars à du souci à se faire.
Je trouve que la facon dont tu as pris le problème tres élégante.
14 mai 2007 à 03:33
15 mars 2007 à 15:58
je me demandais, pour le tableau avec les faces, s'il ne vallais pas mieux utiliser des quaternions, genre representer le cube en 3D dans la memoire et l'afficher en pseudo-3D, ce qui permetrais de se passer du cube en papier.
Ca donnerais un tableau pour les 6 faces, avec un vecteur pour la direction de chaque face, et un vecteur pour l'orientation celles-ci.
Et il suffirais de faire une rotation de chaque vecteur pour tourner le cube, et de trouver le bon vecteur a afficher (par ex. (0,0,1,0)) dans la liste des directions, son homologue servant pour definir l'orientation de la face avec par ex. ses 2 premieres coordonées (x,y,#,#).
C'est lourd mais ca peux servir a faire évoluer le moteur, pour afficher 3 faces du cube ou autre..
Finalement je vais le coder pour voir... :)
5 mars 2007 à 18:07
la 3D permet d'obtenir des effets qui demanderais des centaines de lignes de codes en 2D.
l'avantage de la 3D (DirectX ou OpenGL (de preference)) c'est les performances a l'affichage et toute les fonctions de bases deja disponible, performantes, optimisées etc.
ce sont deux monde a part et puis le resultat est tellement bien reussi qu'on ne peu rien dire sur cela.
pas d'erreur de texture, effet 3D reussi, on pourrait juste demander un affichage aleatoire des texture sur les faces des cubes :
procedure TForm1.Shp_CreerMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Index,StartIndex : Integer;
UnJpeg : TJPEGImage;
NomFichier, ImgPath : String;
begin
UnCube := TCube.Create(self);
with UnCube do
begin
Virtuel := Rbt_Virtuel.Checked;
Parent := Self;
Taille := StrToInt(Edt_Taille.Text);
Vitesse := 50 - Tkb_Vitesse.Position;
Top := 30;
Left := 270;
UnJpeg := TJPEGImage.Create;
try
StartIndex := Random(100);
AppPath := ExtractFilePath(ParamStr(0)) + 'cubeengine_images\';
for Index := 0 to 5 do
begin
NomFichier := ImgPath+ 'Ima' + IntToStr((StartIndex + Index) mod 6) + '.jpg';
if FileExists(NomFichier)then
begin
UnJpeg.LoadFromFile(NomFichier);
ChargerJpg(Index, UnJpeg);
end;
end;
finally
UnJpeg.Free;
end;
end;
end;
4 mars 2007 à 15:56
Et tu vas commencer par un prototype en papier? lol
@ florenth : Merci pour tes remarques.
Bein oui, c'est pour ça que je poste. Pas pour ma libido... lol
-Alors, je mets de l'ordre dans mes idées. Si j'ai bien compris, le Owner (la fiche) fera appel, lors de sa destruction, au destructor de chaque cube et ainsi tous les Bitmap seront libérés en cascade. Donc, pas la peine de faire explicitement appel au destructor quand il y a un Owner. C'est bien ça, Florent?
Mais n'est-ce pas un bon reflex que de libérer tout ce qu'on crée, même si c'est superflu? Je croyais que c'était un principe en POO. Quelle est la bonne attitude à adopter, finalement?
-Les procédures imbriquées apportent des avantages au niveau de la portée des variables et permettent le copier-coller d'une seule procédure lors de la conception. Mais c'est vrai que ça ne facilite pas la lecture, et c'est important quand on poste. Je ne le ferai donc plus.
-La POO, c'est passionnant, c'est vrai! Et je recommande à tous les débutants de s'y mettre le plus tôt possible. Programmer, n'est-ce pas organiser sa pensée pour tenter de mettre le monde réel en phrases binaires? D'où cette intense satisfaction de se sentir approcher la condition divine. Et la POO facilite grandement cela. Il y a un moment où tout s'éclaire comme une révélation, et je souhaite à tous les programmeurs débutants de connaître cette sensation.
-Minute cubiturique: Pour moi, la vraie programmation 3D n'existe que dans l'info embarquée des machines-outils modernes. Ici, c'est de la pseudo 3D. Et je crois que c'est bien plus compliqué que la vraie 3D.
re-@ Debiars : N'abandonne surtout pas le cinéma pour les cubes, Jean-Pierre!!!
( Les autres comprendront bientôt : Debiars a qq chose sur le feu pour vous ;)
4 mars 2007 à 11:13
Y'a de l'idée, une très bonne réalisation, et même un peu d'ASM !
J'ai cependant quelques remarques (après tout, c'est ce que tu voulais):
- Tu n'es pas obligé de libérer explicitement les TCube que tu crée puisque que spécifie le Owner dans le constructeur. C'est donc la fiche qui libère automatiquement les composants.
- Tu a pas mal de procédures imbriquées dans une seule, ce serait plus simple à comprendre si elles étaient toutes indépendantes.
En tout cas, bienvenue dans le fabuleux monde de la POO ! Plein de bugs et nuit blanches en perspectives !! ^^ lol
Juste un truc:
"Pour faire simple, je dirai que ce sont des cubes 2D qu'on dirait des cubes 3D."
Mais non ! C'est de la vraie 3D que tu viens de coder là !
La troisième dimension, c'est en fait l'art de la représenter en 2D !"(bon, je vous laisse méditer là... encore de la cubiture...)
++
4 mars 2007 à 10:43
Je suis déjà en train de me fouiller pour trouver à quelle sauce accomoder ce moteur là.
Je vois bien un gros cube avec des carrés de toutes les couleurs (6 par exemple) et qu'on ferait tourner par tranche pour essayer de rassembler toutes les couleurs identiques sur la même face...génial, non?
@Carib : le coup du petit cube en papier, j'ai déjà utilisé également!
2 mars 2007 à 22:16
... et je n'ai même pas eu à aller sur la grande muraille pour ça! lol
@Japee: je constate que les allocutions d'une pseudo tête couronnée t'ont marquées
2 mars 2007 à 16:37
La cubiture? Ce serait pas encore un truc relevant de la bistromatique, ça?
2 mars 2007 à 14:06
* ça fait un peu gros mot...
2 mars 2007 à 03:58
Les cubes, on croit tous bien les connaître, mais quand on code pour eux, on se rend vite compte que c'est des pourris.
...
Enfin, c'est ma conviction, now. ;)
2 mars 2007 à 02:43
j'avais pas remarqué que les images étaient toujours dans le bon sens en mode Réel. Désolé ... ;)
Effectivement pas besoin, dans ce cas, d'éffectuer une rotation.
Remarque je l'avais noté "(je ne sais pas si c'est normal ou non)"
1 mars 2007 à 23:39
@ Cirec
Pourquoi voudrais-tu faire pivoter une image qui est dans le bon sens?
C'est la seule raison d'être des cubes virtuels : toujours présenter des images dans le bon sens.
Tu pensais à quelque chose qui pourrait être utile?..
1 mars 2007 à 23:25
ça a l'air bien tout ça ... avec une approche originale
juste un truc (je ne sais pas si c'est normal ou non) en mode réel si je clique en bas à droite le cube éffectue une rotation sur lui même d'un quart de tour vers la droite mais en virtuel il ne se passe rien ?
en tous cas c'est réussit ... bravo
@+
Cirec
1 mars 2007 à 20:44
ben, c'est très bon et ya du boulot !
@+
1 mars 2007 à 03:22
T'es gentil, Francky. Heureux que ça te plaise.
Merci.
Mais Monsieur Debiars est, j'espère, entre d'autres, notre maître à tous.
Et, avec moi, il n'a pas trop de soucis à se faire...
1 mars 2007 à 02:45
Coté code : ben rien à redire c'est du grand art, Monsieur Débiars à du souci à se faire.
Je trouve que la facon dont tu as pris le problème tres élégante.
10/10