Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Geschwindigkeit umkehren (https://www.delphipraxis.net/171532-geschwindigkeit-umkehren.html)

DelphiUser1 11. Nov 2012 17:16

AW: Geschwindigkeit umkehren
 
Was genau ist denn mit "x invertieren" gemeint?
Soll ich die speedx invertieren?
und wieso kann ich rechts und links und oben und unten als eins behandeln. Funktioniert zumindest nicht

Bummi 11. Nov 2012 18:06

AW: Geschwindigkeit umkehren
 
ich meinte etwas in der Art ....
Delphi-Quellcode:
if ((Kreis[b].y+Kreis[b].Height)>Image3.Height) or (Kreis[b].y <=0 ) then
      Kreis[b].speedy := - Kreis[b].speedy;

if ((Kreis[b].x+Kreis[b].Width)>Image3.Width) or (Kreis[b].x <= 0) then
      Kreis[b].speedx := - Kreis[b].speedx;

DelphiUser1 11. Nov 2012 20:42

AW: Geschwindigkeit umkehren
 
Mit diesem Code passiert leider genau das, was ich vermeiden wollte:
Der Ball prallt wieder in die Richtung, aus der er kam und nicht "Einfallswinkel=Ausfallswinkel"

Bummi 11. Nov 2012 21:03

AW: Geschwindigkeit umkehren
 
die Stelle mit der Positionszuweisung sieht schon so oder so ähnlich aus ?

Delphi-Quellcode:
Kreis[b].x := Kreis[b].x + Kreis[b].speedy;
Kreis[b].y := Kreis[b].y + Kreis[b].speedx;
ich hatte vor längerem mal ein Thema wo so etwas auch verwendet wurde ...
http://www.delphipraxis.net/156716-g...-und-zoom.html

DelphiUser1 11. Nov 2012 21:12

AW: Geschwindigkeit umkehren
 
Nein so oder so ähnlich sah sie nicht aus, aber mit dieser Zuweisung bugt es komplett rum.
Die Kreise bleiben stehen wenn sie jetzt das Objekt berühren...

nuclearping 12. Nov 2012 00:32

AW: Geschwindigkeit umkehren
 
Zitat:

Zitat von DelphiUser1 (Beitrag 1190739)
Danke für die Lösung. Ich habe jetzt mal angefangen mit der Kollision
Delphi-Quellcode:
if (Kreis[b].y+Kreis[b].Height)>Image3.Height then    //Kreis kommt von oben
      Kreis[b].speedy := -Abs(Kreis[b].speedy);
und das funktioniert auch alles soweit, aber als ich versucht habe die kollision von unten und den Seiten zu schreiben, kam ich nicht mehr so ganz weiter. mit diesem code ging es nicht:

Delphi-Quellcode:
if Kreis[b].x+Kreis[b].Width>Image3.Width then     //
      begin
      Kreis[b].speedy := -Abs(Kreis[b].speedy);
      Kreis[b].speedx:= Abs(Kreis[b].speedx);
      end;

1) Was willst du eigentlich mit dem Abs bezwecken?
2) So schwer ist es nicht. Es ist einfach nur Logik und hat nichts mit Programmieren zu tun. Logikarbeit nehme ich dir aber nicht ab, weil's der Punkt ist, wo du am meisten lernen kannst. :mrgreen:

DelphiUser1 12. Nov 2012 00:39

AW: Geschwindigkeit umkehren
 
1.Mir wurde erklärt das "abs" die Richtung absolut umkehrt und irgendwie sinnvoller wäre.
2.ja das ist richtig, ich will es auch gerne alleine schaffen, aber so ganz peile ich es noch nicht.
x und y zeigen die Position auf x und y Achsen an aber geht diese Position jetzt von der Mitte des Kreises aus oder wieso verrechnen wir diese Koordinaten mit der höhe?

Bummi 12. Nov 2012 00:52

AW: Geschwindigkeit umkehren
 
Zitat:

Die Kreise bleiben stehen wenn sie jetzt das Objekt berühren...
Der Code mit + with war von Dir und lies darauf schließen dass x und y die linke obere Ecke eines Rechteckes um Deinen Kreis darstellen. Im letzen Post schreibst Du x und y wären die Mitte es Kreises, in diesem Fall bleibst Du bei den Bedingungen zwangsläufig kleben wenn z.B. der rechte Halbkreis den rechten Rand beinhaltet und die Geschwindigkeit klein genug ist.
Hier musst Du einfach die Grenzen Deinen Gegebenheiten anpassen und rechts Width/2 zu x addieren und links statt 0 Width/2 verwenden, entsprechend für die y Koordinaten ...

Medium 12. Nov 2012 00:59

AW: Geschwindigkeit umkehren
 
Zitat:

Zitat von DelphiUser1 (Beitrag 1190784)
1.Mir wurde erklärt das "abs" die Richtung absolut umkehrt und irgendwie sinnvoller wäre.

Abs = Betrag, was bei einfachen reellen Zahlen bedeutet: "Wenn da ein Minus vor der Zahl ist, mach es weg. Wenn nicht, lass sie so."
Wer auch immer dir das wie du schriebst erzählt hat, wollte dich entweder veräppeln, oder ist definitiv nicht die richtige Person für mathematische Fragen. (Zumal ich nichtmal wüsse, wie man "absolut umkehren" verstehen sollte.)

DelphiUser1 12. Nov 2012 01:02

AW: Geschwindigkeit umkehren
 
Das Problem war wohl, dass ich mit dem Programm vor Ewigkeiten angefangen habe und mir über x und y nicht mehr im klaren war.
Die beiden variablen werden beim erzeugen des kreises verwendet um einen beliebigen startpunkt zu wählen, das sieht dann so aus:
Delphi-Quellcode:
Kreis [a].x := Kreis [a].radius + random (1000 - 2*Kreis [a].radius);
  Kreis [a].y := Kreis [a].radius + random (500 - 2*Kreis [a].radius);


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz