JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=ffd0178e2145b6c918a50ce412864528Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Frage zum Thema Sprite
Gehe zu Seite Zurück  1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 01.10.2002, 19:20    Titel: Antworten mit Zitat

Ich hab ja auch nicht gemeint, das man einen Pixel um sich selbst dreht, sondern um einen Mittelpunkt, der auch ganz woanders sein kann. Wenn jetzt 2 Benachbarte Pixel um einen Winkel gedreht werden (wobei der Mittelpunkt unterhalb der Pixel ist) kann es bei bestimmten Winkeln passieren, daß diese Pixel nicht mehr nebeneinander liegen. (Rundungsungenauigkeiten)
Nimmt man jetzt aber das Zielsurface, und berechnet rückwärts, von wo die Farbe dieses Pixels kommen muß, entstehen keine Löcher und Interpolieren muß man auch nicht unbedingt.
Und wenn man jetzt noch die Rotierfunktion in einer 2x2Matrix brerchnet, spart man noch mal gut die hälfte an Rechenschritten, was der Performace zugute kommt.
Ich hoffe, ich hab's nicht zu kompliziert erklärt.

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 01.10.2002, 19:27    Titel: Antworten mit Zitat

Nee ihr habt ja das nru so geschrieben und ich habe es wortgenau übernommen, damit ihr seht, dass man sich so präzise wie möglich ausdrücken sollte... Razz

Denkst du wirklich ich weiß nicht, was du meintest Question
aber lassen wir das Mal und bleiben beim Thema... Smile

Aber wie rotiert(verschiebt) ihr einen Punkt um einen gewissen Winkel?

Ich habe mir da verschiedene Verfahren ausgedacht, die zwar gingen, aber doch kompliziert sind und das wäre dann ein riesen Rechenaufwand... Sad

Edit: Heh ich habe doch Recht...ihr könnt keinen Punkt rotieren nur verschieben und es wirkt wie eine Rotation...das meinte ich...und das ganze um einen Punkt zu rotieren wäre für mich zu kompliziert...das meine ich sogesehen, dass das viel zu viel Arbeit machen würde als einfach ne Lineare Funktion für jede Reihe zu schreiben...
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 01.10.2002, 19:46    Titel: Antworten mit Zitat

Die Performance spielt doch keine Rolle, wenn man das nicht Echtzeit macht(wie ich es ja vorgeschlagen habe).

Aber lineare Funktion? Kannst du mir mal erklären, wie man mit einer LINEAREN Funktion etwas DREHEN kann? O.o Ich benutze dazu Sinus und Kosinus.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 01.10.2002, 20:36    Titel: Antworten mit Zitat

Ihr habt mir so richtig lust gemacht, mal so ein kleines Prog zu schreiben, mit der man Bitmaps um einen beliebigen Winkel rotieren kann. Ich mach das einfach mal und lade es hoch, dann könnt Ihr euch anschauen, wie das gemacht wird und den Code eventuell selbst verbessern/erweitern
Bis nachher also,

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 01.10.2002, 21:42    Titel: Antworten mit Zitat

Mit den linearen Funktionen, dass kann ich nciht nur mit Text erklären...wenn ich Mal Zeit ahb...mach ich dazu ne Zeichnung, dass man das auch versteht... Smile

Ja mach Mal so ein Programm...würde mcih brennend interesieren, wie du das machst Smile
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 01.10.2002, 22:34    Titel: Antworten mit Zitat

Ich hab hier Quellcode von einer Klasse die das macht... Wink
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 01.10.2002, 23:53    Titel: Antworten mit Zitat

So, das Miniprogramm ist fertig - Hier das Projekt zum Downloaden:

Rotation

Der Quelltext ist extrem kurz gehalten, sollte aber leicht lesbar sein.

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}


Zuletzt bearbeitet von AFE-GmdG am 19.11.2002, 23:19, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 02.10.2002, 07:21    Titel: Antworten mit Zitat

Klappt super, der Quelltext ist auch in einem sehr guten STil geschrieben...man findet sich sofort zurecht...

...das Problem bei mir ist, dass wir noch nciht Mal Sincus, Cosinus, Tangens, etc... haben... Sad sind erst bei der Quadratwurzel und wir lernen erst in paar Stunden den Algorhytmus... Sad

Wo kann man das schon davor Lernen, gibt's da ein gutes Mathebuch?
Oder soll ich einfach meinen Mathelehrer konsultieren?
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 02.10.2002, 08:17    Titel: Antworten mit Zitat

Dein Mathelehrer wird große Augen machen, wenn du ihn nach solch einem Thema fragst, und dann hängt es davon ab, in welche der beiden Gruppen er gehört.
Gehört er zur Gruppe 1 freut er sich, das du dich mehr mit Mathematik beschäftigst und er hilft dir sehr wahrscheinlich.
Gehört er aber zur Gruppe 2, weiß dein Mathelehrer auch nur das, was gerade an Stoff drann ist, Fragst du ihn nach z.B. integrieren verweist er dich auf später, ein anderes mal villeicht, heute nicht, usw. (letzteren hatte ich leider im Abitur)

Die Rotierroutine ist erstaunlich kurz geworden, wobei ich allerdings auch keinerlei größen abfrage und verarbeite, ich setze einfach mal voraus, daß das Bitmap 128x64 Pixel groß ist...

Verbesserungsvorschläge:
- Colorkey
- Beliebig große Bitmaps (bis 512x512 Pixel)
- Zielbitmap so vergrößern, daß das gedrehte Bitmap hundertprozentig hineinpasst.
- Rechenschritte durch assamblercode Beschleunigen (Kann ich nicht)

Hinweise zur Benutzung der derzeitigen Funktion:
- Quell- und Zielbitmap sind derzeit auf 128x64 Pixel festgelegt.
- Die Funktion erstellt ein neues Bitmap mit CreateCompatibleBitmap(), das GDI-Objekt muß nach gebrauch also wieder gelöscht werden. (Siehe Code)

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 02.10.2002, 10:33    Titel: Antworten mit Zitat

Mein Mathe/Physiklehrer hat sich gefreut als ich ihn gefragt habe, wie man den Winkel eines Vektors berechnet Wink Hat sich auch gut auf meine mündliche Note ausgewirkt. Wink
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 02.10.2002, 16:07    Titel: Antworten mit Zitat

echt, cool, dann muss ich meinen mathelehrer mal n bischen nach matrizen ausfragen Smile

könnte man das drehen vileicht beschleunigen, wenn man die Surface in den arbeitsspeicher kopieren würde und sie dann da drehen würde?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 02.10.2002, 16:38    Titel: Antworten mit Zitat

Ich habe doch hier kein DirectDraw verwendet, sondern ganz normales GDI und Bitmaps. Diese befinden sich zwar nach dem Laden auch im Speicher, aber die GDI ist nunmal nicht die schnellste. Außerdem hab ich doch das Bitmap nur alle 100 Millisekunden um 1° gedreht, es kann also gar nicht schneller funktionieren, als jetzt. Ich finde, daß es schnell genug ist (In kleinem Maßstab, große Bitmaps hab ich noch nicht getestet)

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 41
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 02.10.2002, 16:39    Titel: Antworten mit Zitat

achso, sry, hab nicht genau genug nachgeschaut.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 02.10.2002, 20:34    Titel: Antworten mit Zitat

Ich würde die Bitmaps erst garnicht in Echtzeit drehen(ohne Hardwarebeschleunigung jedenfalls). Man kann doch BEVOR das Spiel losgeht 64 Drehstufen von den Bitmaps machen. Das ist auf jedenfall genug.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 02.10.2002, 21:20    Titel: Antworten mit Zitat

Das wär dann auf jeden Fall eine enorme Speicherbelastung. Stell dir mal vor, du hast nicht nur 1 Objekt, das in 64 Drehstufen gespeichert werden müsste, sondern 10 oder 100...

AFE-GmdG
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3  Weiter
Seite 2 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum