Autor Beitrag
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Di 28.12.10 23:16 
Speichern und Darstellung trennen? Was hindert dich daran, intern extended zu nehmen? Wenn du keine Hilfe willst, machs halt alleine.
Timebased movement ist nunmal die Methode für sowas.
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Mi 29.12.10 01:01 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

Klar will ich Hilfe, sonst wär ich auch schon längst nicht so weit gekommen ( auch wenn ich in 4 Tagen 15-20 Stunden da schon dran saß ) ;)

Ersten sollte ich doch Speicherplatz sparen wo es geht und Extended rechnet soweit ich weiß viel genauer als Single (= real). am Ende bevor die Kugel neu gezeichnet wird, muss man so doer so wieder runden, weildas Programm nicht so genau zeichnet. Damit hab ich auch schon sehr starke Probleme :/

PS: In dem Forum* hab ich die Datei und, wenn du Lust/Zeit hast und dir das mal ansiehst, wirst du merken, dass es einfach total ungenau läuft, so wie ich es mache, aber ich weiß nciht, wo ich korrigieren kann. *: blinkendes Image
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 29.12.10 01:31 
Speicherplatz ist eh kein Problem, berechne in eine Dynamisches Array of Record folgende Werte
Millisekunde
X Double,
Y Double
Ich würde auch noch auch noch den aktuellen Richtungsvektor, Restgeschwindigkeit und Reibungskoeffizenten mitführen alle Werte rein bis die Geschwindigkeit 0 ist.
Beim Animieren suchst Du den passenden MS Eintrag von GetTickcount - StartTickcount und gibst an X und Y jetzt gerundet aus.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Mi 29.12.10 14:43 
Wozu brauch ich die "Millisekunde" und was für ne Einheit sol das dann sein?
und zu x und y double... ihr reitet wohl solange draufrum. Es ist doch eigentlich egal wie genau ich die Position berechne. Delphi malt nur integerpositionen... heißt: Ob ich auf die hunderste Stelle der auf die millionste Stelle berechne is total egal, da am Ende ich sowieso das ganz aufrunden muss...

Z den anderen Werten. Klar werde ich das noch hinzufügen, aber im Moment ist doch noch das Problem, dass die Kugel erst einmal in die Richtung laufen soll, die ich ihr vorgebe und, dass sie alles richtig spiegelt. Schaut euch doch endlich mal das an, was ich für euch zeichne und reinstelle...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 29.12.10 14:54 
user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Ob ich auf die hunderste Stelle der auf die millionste Stelle berechne is total egal, da am Ende ich sowieso das ganz aufrunden muss...
Gemeint ist das so: Wenn du bei 100 Schritten jeweils ein halbes Pixel Fehler hast durch die Rundung, sind das am Ende 50 Pixel...
Deshalb ist es sinnvoll Zwischenschritte genau zu speichern und nur das Ergebnis auf ganze Pixel zu runden. sonst summieren sich die Rundungsfehler ggf. auf.
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Mi 29.12.10 14:58 
Es reitet niemand wegen der Genauigkeit darauf rum, sondern weil die Aussage der Delphi-Entwickler sowas ist wie: "-ACHTUNG- Den Datentyp REAL NICHT mehr verwenden. In der aktuellen Delphiversion ist er nur noch aus Abwärtskompatibilitätsgründen vorhanden." (Real wird intern durch Double ersetzt) Und dann ists halt nicht ganz so schlau, genau diesen Datentyp zu verwenden ;)

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 29.12.10 15:03 
jaenicke hat das wichtigste erwähnt.
Hinzu kommt das der Timer ein extrem ungenaues und unzuverlässiges Teil ist, Du kannst Dich nicht darauf verlassen alle 15 ms bedient zu werden.
Wenn Du das Array korrekt berechnet hast kannst Du den für den gerade getroffenen Zeitpunkt die Korrekten Koordinaten darstellen.
Deine Reflektionsmethode wird nur bei absolut senkrechten oder waagrechten Flächen funktionieren, damit wirst Du auf Dauer nicht auskommen und die Zeit lieber direkt in eine korrekte Implementierung investieren.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Do 30.12.10 14:20 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
jaenicke hat das wichtigste erwähnt.
Deine Reflektionsmethode wird nur bei absolut senkrechten oder waagrechten Flächen funktionieren, damit wirst Du auf Dauer nicht auskommen und die Zeit lieber direkt in eine korrekte Implementierung investieren.


Das stimmt, bloß hab ich leider keeeein ahnung, wie ich das zum beispiel bei einer gerundeten ecke machen soll oder bei einer schrägen... ich bräuchte immer einen Punkt der im rechten Winkel zum Reflektionspunkt und der vorherigen Position steht ( damit ich winkel berechnen kann oder auch direkt spiegeln kann... ) -> heißt ch müsste für jeden Kontaktpunkt mit einem Hindernis einen solchen Punkt definieren... Mir fällt dazu einfach keine gute Lösung ein... :/

Und danke an euch wegen der Erklärung zu Singel/Real. Ich änder das sofort in Double :p Mir ist gestern auch schon aufgefallen, dass er bei der Geschwindigkeit 1 zumbeispiel nur in 8 verschiedene Richtungen schießen kann... bei geschwindigkeit 4 schafft er 16 vgerschiedene richtungen... ic hweiß nciht, ow der fehler liegt.. vll wirklich an der ungenauen berechnung mit single. ich versuchs mal und meld mich wieder

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

mmmh, hilft mir nicht weiter mit Double :(

ich hab ja das Programm im anderen Topic hochgeladen, vll wollt ihrs mal abspielen und die Richtungen testen... ich überleg mir nochmal, wo der fehler liegt.

MfG Thomas