AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Kollision mit Reflektion - Ich raffs net...
Thema durchsuchen
Ansicht
Themen-Optionen

Kollision mit Reflektion - Ich raffs net...

Ein Thema von Fussel9 · begonnen am 9. Feb 2011 · letzter Beitrag vom 13. Feb 2011
Thema geschlossen
Seite 2 von 3     12 3      
Notxor

Registriert seit: 28. Okt 2009
41 Beiträge
 
Delphi XE2 Professional
 
#11

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 11. Feb 2011, 17:39
ein Normalvektor ist jeder Vektor, der auf die Gerade/Fläche/(Raum) normal steht. 2 Vektoren stehen aufeinander Normal, wenn ihr Skalarprodukt 0 ergibt. Im 2-dimensionalen kann man dies sehr einfach berechnen(wurde aber schon in diesem Thread irgendwo gesagt...)

v = (x,y)

1.Normalvektor auf v = (y,-x)
2.Normalvektor auf v = (-y,x)

es gibt aber unendlich viele davon, da du n1,n2 mit einem beliebigen Skalar multiplizieren kannst (außer 0), ohne dass sich die Richtung ändert.
 
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#12

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 11. Feb 2011, 17:51
Das wird ihm auch nicht weiterhelfen ^^

Das mit den Vektoren hatte ich nur ins Spiel gebracht, weil jemand meinte:
Zitat:
Daraus kannst du dann über den Tangens den Winkel ermitteln...´
Wenn dein Ball nur an horizontalen und Vertikalen Flächen reflektiert ist es sogar noch einfacher...
...dann musst du nur das Vorzeichen einer der Teilgeschwindigkeiten umkehren.
Um zu zeigen: Man kann auf den Tangens verzichten, auch wenn die Geraden schräg im Raum liegen. Die Formel und den Normalenvektor kannst du daher wieder vergessen - du hast ja anscheinend nur vertikale/horizontale Flächen

Zu dem Problem: Du hast ja bereits so eine Art Kollisionserkennung drin. Das Problem ist nur: IntersectRect liefert dir zwar zurück, ob es eine Kollision gab, aber nicht wo. Das musst du selbst herausfinden!

Unter der Annahme dass der übrige Code funktioniert (sieht etwas umständlich aber sonst okay aus...) musst du also in der Schleife feststellen a) ob der Ball kollidiert und b) Wenn ja, wo er kollidiert.
Du musst halt manuell nacheinander die Ober & Unterseite und die linke und die rechte Seite abchecken. Bei Ober/Unterseite die Y Komponente invertieren, Bei links/rechts eben die X-Komponente invertieren.
 
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#13

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 11. Feb 2011, 20:42
...solangsam gehn mir die Ideen aus... jetz funktionierts nix mehr ^^

Delphi-Quellcode:
procedure TFormMain.MoveBall(pCollisionObject: array of TPanel);
var tempObject,CollisionRect: TRect;
    I,J,a,b,c,d: Integer;
begin
  sball.left:=sball.left+XCor;
  Ball.Left:=SBall.Left;
  Ball.Right:=SBall.Left+SBall.Width;
    if sball.left < (PLinks.Left+PLinks.Width) then
      begin
      sball.left := (PLinks.Left+PLinks.Width);
      Xcor := -Xcor;
      end;
    if sball.left > PRechts.Left - sball.width then
      begin
      sball.left := (PRechts.Left - sball.width);
      XCor := -XCor;
      end;
for J := 0 to SBall.Width - 1 do
  begin
    tempObject.Left:=pCollisionObject[J].Left;
    tempObject.Right:=pCollisionObject[J].Left+pCollisionObject[J].Width;
    tempObject.Top:=pCollisionObject[J].Top;
    tempObject.Bottom:=pCollisionObject[J].Top+pCollisionObject[J].Height;
    if InterSectRect(CollisionRect,Ball,tempObject) then
      begin
        if not (pCollisionObject[J]=nil) then
          begin
            if (sball.Left < (pCollisionObject[J].Left+pCollisionObject[J].Width)) then
              begin
                XCor := -XCor;
                pCollisionObject[J]:=nil;
              end;
            if ((sball.Left+sball.Width)>pCollisionObject[J].Left) then
              begin
                XCor:= -XCor;
                pCollisionObject[J]:=nil;
              end;
          end;
      end;
  end;


  sball.top := sball.top+YCor;
  Ball.Top:=SBall.Top;
  Ball.Bottom:=SBall.Top+SBall.Height;
    if sball.top < (POben.Top+POben.Height) then
      begin
      sball.Top := (POben.Top+POben.Height);
      YCor := -YCor;
      end;
    if sball.top > (self.height - sball.height) then
      begin
      sball.top := (self.height - sball.height);
      YCor := -YCor;
      end;
    if IntersectRect(Collision,Ball,Stick) then
      begin
        sball.top := (PStick.top - sball.height);
        YCor:= -YCor;
        XCor:= XCor-1;
      end;
    if Sball.Top > PStick.Top then
      begin
        SBall.Visible:=False;
        TMover.Enabled:=False;
        MessageDLG('Game Over!',mtWarning,[mbOk],0);
        SpawnBall;
      end;
for I := 0 to SBall.Height - 1 do
  begin
    tempObject.Left:=pCollisionObject[I].Left;
    tempObject.Right:=pCollisionObject[I].Left+pCollisionObject[I].Width;
    tempObject.Top:=pCollisionObject[I].Top;
    tempObject.Bottom:=pCollisionObject[I].Top+pCollisionObject[I].Height;
    if InterSectRect(CollisionRect,Ball,tempObject) then
      begin
        if not (pCollisionObject[I]=nil) then
          begin
            if (sball.Top < (pCollisionObject[I].Top+pCollisionObject[I].Height)) then
              begin
                YCor := -YCor;
                pCollisionObject[I]:=nil;
              end;
            if ((sball.Top+sball.Height)>pCollisionObject[I].Top) then
              begin
                YCor:= -YCor;
                pCollisionObject[I]:=nil;
              end;
          end;
      end;
    end;
end;
 
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#14

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 11. Feb 2011, 23:32
...solangsam gehn mir die Ideen aus... jetz funktionierts nix mehr ^^
Und, soll das eine Frage sein? Was soll man damit anfangen?

Einfach hingeklatschte Mammutquelltexte.....

Ich muß mal ein wenig deutlicher werden: Du scheinst mathematisch und/oder physikalisch mit der Aufgabe(nstellung) überfordert zu sein. Doch derlei Defizite auszubügeln, dürfte dieses (Programmier-!)Forum nicht der geeignete Ort sein (auch wenn es nicht meine Aufgabe ist, darüber zu wachen und zu befinden). Ich staune über die Geduld der anderen Schreiberlinge und der Moderatoren.
 
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#15

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 12. Feb 2011, 02:41
...solangsam gehn mir die Ideen aus... jetz funktionierts nix mehr ^^
Und, soll das eine Frage sein? Was soll man damit anfangen?

Einfach hingeklatschte Mammutquelltexte.....

Ich muß mal ein wenig deutlicher werden: Du scheinst mathematisch und/oder physikalisch mit der Aufgabe(nstellung) überfordert zu sein. Doch derlei Defizite auszubügeln, dürfte dieses (Programmier-!)Forum nicht der geeignete Ort sein (auch wenn es nicht meine Aufgabe ist, darüber zu wachen und zu befinden). Ich staune über die Geduld der anderen Schreiberlinge und der Moderatoren.
Niemand zwingt dich hier zu antworten und wenn die anderen freundlicher weise versuchen mir zu helfen und mir darlegen wo meine fehler liegen, dann ist das ihre eigene entscheidung gewesen mir zu helfen.

Und da es hier um Programmierung geht denke ich das dies schon der ort ist so etwas zu lernen/sich so etwas erklären zu lassem.
 
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#16

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 12. Feb 2011, 03:02
Da ist der Denkfehler: Es geht hier um mathematische Grundlagen, nicht um die Umsetzung. Zwar kann man die sicherlich auch diskutieren, aber nur schwerlich mit jemandem der diese, und ich fasse dies mal mutwillig in eigenen Worten zusammen: "alles nur doof" findet bzw. sich dagegen sperrt. Von daher bin ich auch über die kritikfreiheit bisher in diesem Thread verwundert, nicht zuletzt weil auch diese Kritik Hilfe sein würde (bzgl. Motivation sich diesen Dingen etwas bereitwilliger gegenüber zu stellen vor allem).
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
 
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#17

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 12. Feb 2011, 10:37
Niemand zwingt dich hier zu antworten und wenn die anderen freundlicher weise versuchen mir zu helfen und mir darlegen wo meine fehler liegen, dann ist das ihre eigene entscheidung gewesen mir zu helfen.
Vielen Dank für diese für mich völlig neue Information!

Wenn jemand Defizite hinsichtlich der nötigen Grundlagenkenntnisse und dazu auch noch fehlende Lernbereitschaft ("Vektorgedönz" (es heißt übrigens Gedöns), "nur hab ich cosinus,tangens und sinus schon im Matheunterricht aufs verrecken gehasst...") signalisiert, dann vergeht mir die Hilfelust bei meinen ohnehin nur bescheidenen Hilfevoraussetzungen. Sollte mich wundern, wenn hier noch jemand erhebliches Engagement zeigen sollte.

Dann noch "Ich raffs net", "jetz funktionierts nix mehr" (fehlt nur noch mein Favorit: "proggi funzt net"), was m.E. ebenso die hochgradige Lustlosigkeit und den insgeheimen Wunsch, die anderen mögen es doch bitte für mich erledigen, als Botschaften transportiert.

Ehrlich, von jemandem, der über 300 Beiträge (!) allein in diesem Forum vorzuweisen hat, hätte ich etwas mehr Professionalität im Umgang mit einem Forum und dem Altruismus seiner Mitglieder erwartet (bei Einsteigern ist eine gewisse Unbeholfenheit, Unbedarftheit und Unkenntnis ja unumgänglich). In einem anderen Delphiforum hätte Dich ein gewisser ((Super-)Moderations-)Drachen, der beileibe kein Kind von Traurigkeit und sich für bestimmte Bereinigungsaktionen nicht zu schade ist (der läßt dafür auch und sogar menschlich ab und zu die Fetzen fliegen), längst zur Schnecke gemacht und einen solchen Diskussionsverlauf wie diesen hier finalisiert.

Geändert von Delphi-Laie (12. Feb 2011 um 23:04 Uhr)
 
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#18

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 12. Feb 2011, 14:25
Kannst du mir mal bitte sagen was dein problem ist? weil es wohl kaum darum gehen kann das ich mathematisch weniger begabt bin als euer lordschaft. Sollte mir der fehler unterlaufen sein doch tatsächlich anzudeuten das ich im bereich des Sinus Cosinus und Tangens nicht gerade viel verstanden habe, so trolle ich mich nun in tiefster verzweiflung in meine ecke....


Dies ist ein Forum d.h. jeder kann (muss aber nicht) hier Fragen stellen, ob diese beantwortet werden hängt einzig und allein von den übrigen Forenmitgliedern ab.
Möchte jemand antworten tut er dies, wenn nicht dann nicht.
Allerdings möchte ich einmal anmerken das solche unqualifizierten und mehr als unnützen Bemerkungen weder mir noch irgendjemandem sonst in diesem Forum helfen.
Und da ist Medium ja wieder ganz groß drin, stimmts nicht?
Hat zwar noch nicht einen Beitrag zu dem Thread geschrieben, aber zum Nörgeln kommt er doch gerne vorbei.

Zitat:
dann vergeht mir die Hilfelust bei meinen ohnehin nur bescheidenen Hilfevoraussetzungen.
Dann lass es doch einfach statt mich hier als faulen dummen Idioten zu bezeichnen.
Denn ich wüsste nicht das wir uns kennen und ich wüsste nicht das du es dir erlauben kannst mich zu beurteilen.

Anbei schreibe ich das Programm an dem ich arbeite freiwillig und würde nur zu gern verstehen wie ich denn jetzt herausfinde wo die Kollision stattgefunden hat. Und wenn ich meine Fragen dann nicht ausformuliert habe, dann liegt das daran, das ich ernsthaft angenommen habe das jemand mit Verstand aus dem Kontext das Problem herauslesen kann.

Und damit ist die Sache für mich gegessen wenn du mich also weiterhin Beleidigen willst und oder mir irgendwelche Vorwürfe machen willst meine Motivation betreffend oder wieso auch immer, dann mach das doch bitte per PN , denn in diesem Thread hat das nichts zu suchen.

Irgendjemand hat vielleicht irgendwann das selbe Problem wie ich, das er es nie richtig gelernt hat und nun versucht es sich selbst anzueignen indem er ein Forum befragt und vielleicht stößt dieser Jemand dann auf diesen Thread und da helfen ihm deine oder Mediums Meinungen über mich nicht weiter.
 
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#19

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 12. Feb 2011, 15:53
Ich freu mich schon, wie du mit deiner Einstellung versuchts mal in der Informatik-Arbeitswelt zu überleben. Der Gedanke daran allein stimmt mich schon fröhlich genug, um hier jetzt nicht ausfallend werden zu müssen. Du fällst mit deinen Threads hier alle Nase lang schon auf die Nase, und ich bin nach wie vor einfach nur baff, dass bei dir nicht im Ansatz die Idee überhaupt aufkommt, dass das an dir liegen könnte.
Und wie du ja selber schon schreibst: Es ist jedem selbst überlassen in einem Forum zu schreiben, und auch was man schreibt. Jetzt kommst du daher, und wirfst mir genau dieses Verhalten vor? Ganz ehrlich: Gerade dieses "Vektorgedönz" ist mein Spezialgebiet, und ich könnte dir alles was du brauchst hier hin klatschen. Ist dir damit geholfen? NÖ! Mal davon abgesehen, dass ich dir, mit Blick auf Vergangenes, ohnehin keine Hilfe sein wöllte. Der Hinweis auf Öffnung gegenüber der Grundlagen war mein letzter Versuch.

Ich wünsche noch viel "Erfolg" mit deiner Art!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
 
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#20

AW: Kollision mit Reflektion - Ich raffs net...

  Alt 12. Feb 2011, 15:57
Da stach ich wohl in ein Wespennest...was ich gar nicht beabsichtigte.

Hitzige Emotionen sind leider ein ganz schlechter Schreibberater (z.B. kam die Kritik von zweien, das nur am Rande!).

Hat zwar noch nicht einen Beitrag zu dem Thread geschrieben, aber zum Nörgeln kommt er doch gerne vorbei.
Diese Anspielung nehme ich auf mich bezogen - und sie ist, wenn meine Vermutung stimmt, leider falsch. Schau doch mal, wer Dir als erster zum Thema (und nicht Thread!) antwortete (und immerhin war der Versuch einer Hilfe in jenem Beitrage enthalten). Edit: Galt anscheinend doch nicht mir, bleibt jetzt aber dennoch stehen, weil ich Undank wahrnehme.

Im übrigen warte ich genauso gespannt wie Du, ob und welche Hilfe hier wohl noch kommen mag.

Geändert von Delphi-Laie (12. Feb 2011 um 23:06 Uhr)
 
Thema geschlossen
Seite 2 von 3     12 3      


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 09:01 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