Relier des points dans une paintbox par une courbe

Résolu
Signaler
Messages postés
8
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
20 août 2007
-
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
-
<!-- icon and title -->

Bonjour,

Je suis un grand débutant en delphi (j'ai commencé y'a 5 semaines!) et
je réalise un programme permettrant de comprendre comment on guide un
missile suivant différentes lois de guidage.


Je dois faire rentrer par l'utilisateur la trajectoire de la cible et
le programme calcule celle du missile puis représente tout ca à l'aide
du canvas d'une paintbox.


Pour l'instant la trajectoire de la cible est rectiligne : je clique à
un endroit dans la paintbox (pour le point de départ) puis cela trace
une droite.


J'aimerai pouvoir rentrer un certain nombre de points et faire passer
la cible par ceux ci sans avoir des morceaux de droites il faut
quelques chose qui represente une trajectoire d'une cible réel (avions
ou autre).


Les positions de la cible ainsi que celles du missile sont rentrées
dans un tableau ce qui me permet d'effectuer les calculs facilement,
j'aimerai garder ce système avec la trajectoire calculée avec plusieurs
points.


voila si vous avez des idées et ou meme des morceaux de codes je suis
preneur, si y'en a que ca interesse le sujet de ce programme dites moi
et je vous détaillerai le programme!
si vous pouvez ou voulez de m'aider à développer ce programme ca
m'interesse aussi car je galère un peu pour l'optimiser et faire
certains trucs!


Voila j'espère n'avoir pas été trop long, merci d'avance!

A+

26 réponses

Messages postés
8
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
20 août 2007

J'esaye de la faire avec pavé directionnel mais je n'y arrive pas : le timer tourne mais c'est tout !


Regardes:

var

  Form1: TForm1;

  Vx:integer;

  Vy:integer;

  i,j:integer;

  X0,Y0:integer;

  dt:double;

implementation


{$R *.dfm}


procedure TForm1.FormActivate(Sender: TObject);

begin

X0:=10;

Y0:=150;

dt:=0.01;

Vx:=100;

Vy:=0;

i:=1;

j:=0;

canvas.MoveTo(X0,Y0)

end;


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

  Shift: TShiftState);

  var

  Inc : Integer;


begin

  inc:=1;

  Case Key of

  VK_LEFT :   Vx := Vx - Inc;

  VK_RIGHT :  Vx := Vx + Inc;

  VK_UP :     Vy  := Vy - Inc;

  VK_DOWN :   Vy  := Vy + Inc;

  end;

end;


procedure TForm1.Button1Click(Sender: TObject);

begin

Timer1.Enabled:=True;

Form1.keypreview:=True;

end;


procedure TForm1.Timer1Timer(Sender: TObject);

begin

canvas.LineTo(X0+round(Vx*dt*i),Y0+round(Vy*dt*j));


inc(i);

end;

end.


En fait je voudrai que quand il n'y a pas d'actions sur les flèches la cible aille tout droit (pour l' instant ca ca marche)

Up pour monter

down pour descendre

Left pour ralentir

Right pour accélérer


Qu'est ce qui va pas dans mon code??

Après faudrait que je récupère les positions dans un tableaux mais ca doit pas etre compliquer.

si vous avez une idée?
Messages postés
8
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
20 août 2007

Ca marche pas ton code enfin ca fait comme le mien la cible évolue en ligne droite sans que l'on puisse agir sur elle!
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
Si, ça marche.
Mais c'est une question de focus.

Ajoute un TEdit à ta fiche ou bien tu rajoutes:




Form1.SetFocusedControl(self);


dans la "procedure TForm1.btnGoClick(Sender: TObject);"

@++
Messages postés
8
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
20 août 2007

Merci beaucoup! je vais integrer ca!


faut que je bosse aussi sur le vecteur vitesse à représenter et ca sera bon !
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
Si tu rencontres des difficultés pour ton vecteur vitesse, pose une nouvelle question sur le forum, stp.

Good, good, good coding!
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
18
Je suis tombé sur ça, par hasard.  :)