khawarizm
Messages postés116Date d'inscriptionmercredi 22 novembre 2000StatutMembreDernière intervention 4 août 2010
-
6 oct. 2007 à 01:50
khawarizm
Messages postés116Date d'inscriptionmercredi 22 novembre 2000StatutMembreDernière intervention 4 août 2010
-
11 oct. 2007 à 22:12
Bonsoir tout le monde ;
Voilà ; j’ai des variables déclarées en integer puis j’ai des boucles for imbriquées (avec ces variables) mais je suis obligé d’incrémenter le pas de 0.5 uniquement !!! Sachant que les boucles for n’acceptent que les variables de type ordinal ; alors comment faire ; les autres formes d’itération ne me conviennent pas ou du moins je ne sais pas comment les utilisées efficacement dans mon problème (j’espère que ma question ou mon explication du problème n’est pas tirée par les cheveux) LOL Merci .
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 6 oct. 2007 à 09:55
"les autres formes d'itération ne me conviennent pas ou du moins je ne
sais pas comment les utilisées efficacement dans mon problème"
Ah oui... je n'avais pas fait attention.
Voici les autres possibilités, je les ai mises en situation pour vérifier.
On part donc toujours de l'hypothèse d'un boucle qui incrémente Valeur = 0 de 0.5, jusqu'à 20.
Trois Buttons, un Label et hop :
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
e: Extended;
begin
e := 0.0;
for i := 0 to 39 do
begin
e := e + 0.5;
Label1.Caption := FloatToStr(e);
Application.ProcessMessages;
Sleep(100);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
e: Extended;
begin
e := 0.0;
while e < 20 do
begin
e := e + 0.5;
Label1.Caption := FloatToStr(e);
Application.ProcessMessages;
Sleep(100);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
e: Extended;
begin
e := 0.0;
repeat
e := e + 0.5;
Label1.Caption := FloatToStr(e);
Application.ProcessMessages;
Sleep(100);
until e = 20;
end;
khawarizm
Messages postés116Date d'inscriptionmercredi 22 novembre 2000StatutMembreDernière intervention 4 août 20101 6 oct. 2007 à 11:38
Bonjour japee ; tout d’abords merci pour ton intervention ; J’aurai du poser le problème autrement :<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
repeat .. until fera bien l’affaire elle me permettra de faire des incrémentation de 0.5 au lieu de 1 sauf que je ne sais pas quoi faire de mes Edit pour faire un transtypage string extended
Caribensila
Messages postés2527Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention16 octobre 201918 10 oct. 2007 à 01:12
Salut,
@ khawarizm, en passant...
¨Pour donner une bonne habitude à khawarizm pour la 3D, un extrait de l'aide Delphi:
«(uses math;)
'SinCos' est deux fois plus rapide qu'un appel Sin suivi d'un appel à Cos pour le même angle.»
Tu dois savoir que des appels à sin et cos sont trés lents; et dans une boucle... la lenteur est multipliée par le nombre d'itérations.
En 3D il est fréquent de calculer les tableaux COS et SIN pour toutes les valeurs d'un angle par pas de 1° dans le 'Formcreate' et ainsi éviter les appels à des fonctions système très coûteux en temps.
En général, une incrémentation de 0.5° ne fera que ralentir l'animation sans donner un meilleur rendu.
J'ai essayé d'être clair, mais j'suis pas sûr... :)))
khawarizm
Messages postés116Date d'inscriptionmercredi 22 novembre 2000StatutMembreDernière intervention 4 août 20101 11 oct. 2007 à 22:12
Bonsoir Cari ; primo : je suis ravi de te lire secundo : tu à été très claire je te remercie beaucoup et puis tu sais, je débute sous GLScene et par conséquent la 3D sous Delphi et je compte bien perfectionner mes connaissances de cette technique que je trouve très intéressante . Alors mon ami tes conseils seront toujours les bien venus .
<tt>
A bientôt dans les prochains messages.
</tt>
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>