AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Prism Object bewegung (richtungen)
Thema durchsuchen
Ansicht
Themen-Optionen

Object bewegung (richtungen)

Ein Thema von kevSTAR · begonnen am 27. Jun 2007 · letzter Beitrag vom 29. Jun 2007
Antwort Antwort
Seite 2 von 2     12   
kevSTAR

Registriert seit: 5. Jun 2007
117 Beiträge
 
#11

Re: Object bewegung (richtungen)

  Alt 28. Jun 2007, 17:32
was ist bogenmaß?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Object bewegung (richtungen)

  Alt 28. Jun 2007, 17:48
Das habe ich in meinem ersten Post bereits geschrieben: Statt eine 360°-Einteilung hast du hier eine Einteilung von 0 bis 2pi.
Um einen "normalen" Winkel ins Bogenmaß umzurechnen rechnest du *pi/180.

das hier ist Vermurkst:
Delphi-Quellcode:
x1 := {100+}cos(winkel); // Hier ist das falsch
y1 := {100+}sin(winkel); // "
x := round(x1 * 20)+100; // eher hier ;) sonst wird die 100 ja mitmultipliziert und du zeichnest irgendwo ins nirgendwo (Koordinate > 2000)
y := round(y1 * 20)+100; // "
  Mit Zitat antworten Zitat
kevSTAR

Registriert seit: 5. Jun 2007
117 Beiträge
 
#13

Re: Object bewegung (richtungen)

  Alt 28. Jun 2007, 18:04
hmm es geht immernoch nicht..

ich möchte eine gerade zeichnen in einem angegebenen winkel aber es geht nicht habe folgednes:

form create:

winkel := 90 * pi / 180;
x := 100;
y := 100;
x1 := cos(winkel);
y1 := sin(winkel);
x := round(x1)+500;
y := round(y1)+500;


paintbox.paint:

paintbox1.canvas.Pen.Color := clblack;
Paintbox1.Canvas.MoveTo(100,100);
Paintbox1.Canvas.LineTo(x,y);
  Mit Zitat antworten Zitat
kevSTAR

Registriert seit: 5. Jun 2007
117 Beiträge
 
#14

Re: Object bewegung (richtungen)

  Alt 28. Jun 2007, 18:42
hm? keiner 'ne idee?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#15

Re: Object bewegung (richtungen)

  Alt 28. Jun 2007, 19:41
Gib den Leuten doch auch mal Zeit, deinen Beitrag zu lesen. Pushen ist erst ab 24 Stunden erlaubt.

Delphi-Quellcode:
winkel := 90 * pi / 180;
x := 100;
y := 100;
x1 := cos(winkel);
y1 := sin(winkel);
x := round(x1)+500;
y := round(y1)+500;


paintbox.paint: // btw: das hier kann gar nicht gehen, weil da ein Doppelpunkt statt einem Semikolon steht

paintbox1.canvas.Pen.Color := clblack;
Paintbox1.Canvas.MoveTo(100,100);
Paintbox1.Canvas.LineTo(x,y);
Was mir als erstes auffällt ist, dass du x und y den wert 100 zuweist, den du aber nie benutzt. Außerdem kannst du im OnCreate noch nicht zeichnen. Packe das ganze Zeug in's OnPaint des Formulars oder noch besser der Paintbox. Außerdem hast du einen großen Denkfehler drin: Wenn du eine längere Linie Zeichnen willst, musst du x1 und y1 mit einem Wert multiplizieren, nicht einen Wert dazuaddieren!
  Mit Zitat antworten Zitat
kevSTAR

Registriert seit: 5. Jun 2007
117 Beiträge
 
#16

Re: Object bewegung (richtungen)

  Alt 28. Jun 2007, 20:53
Zitat von NamenLozer:
Gib den Leuten doch auch mal Zeit, deinen Beitrag zu lesen. Pushen ist erst ab 24 Stunden erlaubt.

Delphi-Quellcode:
winkel := 90 * pi / 180;
x := 100;
y := 100;
x1 := cos(winkel);
y1 := sin(winkel);
x := round(x1)+500;
y := round(y1)+500;


paintbox.paint: // btw: das hier kann gar nicht gehen, weil da ein Doppelpunkt statt einem Semikolon steht

paintbox1.canvas.Pen.Color := clblack;
Paintbox1.Canvas.MoveTo(100,100);
Paintbox1.Canvas.LineTo(x,y);
Was mir als erstes auffällt ist, dass du x und y den wert 100 zuweist, den du aber nie benutzt. Außerdem kannst du im OnCreate noch nicht zeichnen. Packe das ganze Zeug in's OnPaint des Formulars oder noch besser der Paintbox. Außerdem hast du einen großen Denkfehler drin: Wenn du eine längere Linie Zeichnen willst, musst du x1 und y1 mit einem Wert multiplizieren, nicht einen Wert dazuaddieren!
das mit dem : was du kommentiert hast heisst nur das die folgenden zeilen in der onpaint prozedur der paintbox sind er macht trotzdem nich das richtige


EDIT:


so habe ich es jetzt:



procedure TForm1.FormCreate(Sender: TObject);
begin
winkel := 90 * pi / 180;
x := clientwidth div 2;
y := clientheight div 2;
x1 := x+cos(winkel);
y1 := x+sin(winkel);
x := round(x1);
y := round(y1);

end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
paintbox1.canvas.Pen.Color := clblack;
Paintbox1.Canvas.MoveTo(ClientWidth div 2,clientheight div 2);
Paintbox1.Canvas.LineTo(x,y);
end;
  Mit Zitat antworten Zitat
Chaismo

Registriert seit: 2. Apr 2007
Ort: Dresden
63 Beiträge
 
Delphi 7 Personal
 
#17

Re: Object bewegung (richtungen)

  Alt 29. Jun 2007, 06:18
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var winkel, x,y,x1,y1:Double;
begin
PaintBox1.repaint;
x := PaintBox1.Width div 2;//nicht von dem ganzen FEnster sondern doch nur von der PaintBox oder? :wink:
y := PaintBox1.height div 2;
randomize;
Winkel:=random(359)+1; //Zufallswinkel
Winkel:=Winkel*Pi/180;
x1:=x*cos(Winkel);//addieren nützt da nix..das muss multipliziert werden
y1:=y*sin(Winkel);
PaintBox1.Canvas.MoveTo(round(x),round(y));
PaintBox1.Canvas.LineTo(round(x1),round(y1));
Button1.Caption:=FloatToStr(Winkel);//damit siehst du gleich welches Bogenmaß verwendet wird...
end;
Die Linie wird aber nur in den linken oberen Quadranten gezeichnet aufgrund das der Wert für x1 und y1 immer kleiner sind als x und y
(der sinus, cosinus und Tangens wird nie höher als 1 ) vieleicht lässt du es per random dann nach links/recht oben/unten zeichnen mit...
Delphi-Quellcode:
var i:Integer;
begin
randomize;
i:=random(2);
If i=1 then x1:=x+x1;
Üfr oben /unten nimmste dann einfach y1
Martin Seeler
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#18

Re: Object bewegung (richtungen)

  Alt 29. Jun 2007, 07:47
Zitat:
der sinus, cosinus und Tangens wird nie höher als 1
Der Tangens hat die Eigenschaft für x->pi/4 gegen unendlich zu divergieren...

@ KevStar: Hast du eigentlich jemals schon von Sinus und Cosinus gehört? Les doch erst mal die Wikipedia Artikel durch, damit du weisst, was du eigentlich willst. Und dann nimm dir einen Taschenrechner und rechne dein Programm mal von Hand durch und male es dir auf einen Zettel. Sonst wirst du immer nur rumschreiben und hast im Endeffekt keine Ahnung, was du eigentlich machst.
Du must also erstmal selber genau wissen, wie du etwas berechnest, bevor du den Coumputer daran setzt.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Chaismo

Registriert seit: 2. Apr 2007
Ort: Dresden
63 Beiträge
 
Delphi 7 Personal
 
#19

Re: Object bewegung (richtungen)

  Alt 29. Jun 2007, 12:48
Zitat von Nikolas:
Zitat:
der sinus, cosinus und Tangens wird nie höher als 1
Der Tangens hat die Eigenschaft für x->pi/4 gegen unendlich zu divergieren...
Jo stimmt...da war ich etwas zu voreilig
Naja egal...aber Nikolas hat schon recht...setz dich ersteinmal mit dem mathematischen Hintergrund auseinander, dann klappt das schon
Martin Seeler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz