|
|
|
|
Beim zweiten Nachdenken, fehlen da vielleicht noch ein paar Sachen, aber einfache Kameras sind eigentlich oftmals direkt zu Beginn von entsprechenden Tutorials angesprochen.
Hast du denn Vorgaben, was die Kamera alles können soll?
--------------------- (Trigger Linie)
Also die 4 oben angegebenen Parameter erzeugen die Projektionsmatrix, die man eigentlich nur einmal berechnen muss, so lange man nicht Zoomen möchte. Dafür müsste es eigentlich entsprechende Funktion geben (PerspectiveLeftHand oder so.)
Die Kamera-Position, Richtung und Ausrichtung erzeugen die View-Matrix (bin oben etwas durcheinander gekommen), in DirectX nennt man das Look-At Matrix, welche mit einer ähnlich benannten Methoden erzeugt werden kann.
Die Idee ist dann eben, die Position, Richtung und Ausrichtung mittels Matrizen so zu verändern, dass es natürlich wirkt. In einem EGO-Shooter würde man z.B. grundsätzlich die Richtung ändern, bei einer Draufsicht würde man Position und Richtung gleichmäßig verschieben.
Wenn man sich die Bewegungsmöglichkeiten eines Hubschraubers als Vorbild nimmt, kann man da entsprechende Methoden für anbieten.
-----------------
Noch was, ich würde statt dem Punkt, wo die Kamera hinschaut, einen Vektor speichern, der angibt, der zu der Position addiert wird und dann das Ziel angibt. Das macht einige Berechnungen einfacher und lässt sich auch leichter vorstellen. Vorallem muss man dann bei vielen Operationen, nicht immer beide Punkte transformieren (beim Strafen z.B.).
|
[Dieser Beitrag wurde 3 mal editiert; zum letzten Mal von [DK]Peacemaker am 05.08.2010 15:34]
|
|
|
|
|
|
Warum Hausarbeiten machen, wenns Peace doch kann? Merk ich mir fuer die Zukunft!
|
|
|
|
|
|
|
| Zitat von Renga
Warum Hausarbeiten machen, wenns Peace doch kann? Merk ich mir fuer die Zukunft!
| |
Wenn deine Hausaufgaben spannend, aber nicht sonderlich aufwändig sind, mach ich das doch glatt.
/e: Darf ich jetzt eigentlich "aufwändig" schreiben, oder ist das O.K. so lange Skunky betrunken ist?
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von [DK]Peacemaker am 05.08.2010 15:36]
|
|
|
|
|
|
Ich Quote hier mal folgenden Post aus der "Informatik helfen..." Thread im pOT und will ihn hier diskutieren und mir von halbdepperten Usern reinquatschen zu lassen.
In dem Post behauptet Klappfallscheibe, dass "out" Parameter bei Methoden schlechter Stil wären:
| Zitat von Klappfallscheibe
| Zitat von Wraith of Seth
Was genau ist daran jetzt schlechter Stil?
| |
Es entspricht nicht dem erwarteten Verhalten. Normalerweise gibt es nur einen Rückgabewert und übergebene Parameter bleiben unverändert. Abweichungen davon machen fremden Code nur schwer lesbar:
|
Code: |
int a = 0, b = 0, c = 1, d = 2;
a = some_func(b, c, d); |
|
Bei Verwendung einer solchen Funktionen ist auf Anhieb noch nicht einmal erkennbar, dass es mehrere Rückgabewerte gibt, geschweige denn, welche die Ein- und welches die Ausgabe-Parameter sind.
Besser wäre z.B. so etwas:
|
Code: |
#include <iostream>
typedef struct {
int a;
int b;
} two_ints;
two_ints some_func(int c, int d);
int main(void)
{
int x = 10, y = 20;
two_ints r;
r = some_func(x, y);
std::cout << "r.a = " << r.a << ", r.b = " << r.b << std::endl;
}
two_ints some_func(int c, int d)
{
two_ints ret;
ret.a = c + d;
ret.b = c - d;
return ret;
}
|
|
| |
Ich behaupte: Bullshit. Die "Rückgabe" über Parameter ist völlig legitim.
1.) Sollte man gefälligst mal die Doku von Methoden lesen die man verwendet.
2.) Kann man, wenn man denn wirklich sicher gehen will, Parameter die sich nicht ändern immernoch mit final/const markieren.
|
|
|
|
|
|
|
|
|
|
|
@Peace: Gefordert sind Standort, Blickrichtung, Ausrichtung (View Up Vector), Sichtwinkel. Außerdem soll das ganze mittels glLoadMatrix() implemtiert werden, was aber kein weiteres Problem darstellt, da dieses bereits innerhalb meiner rotate-, scale- und translate-Funktionen implementiert ist.
Eigentlich gibt OpenGL für alles Mögliche (auch oben genanntes) Funktionen vor, aber eines der Ziele der Vorlesung* ist es, die Arbeitsweise von OpenGL zu verstehen und dementsprechend etwaige Funktionen selbst zu implementieren.
In einer späteren Aufgabe soll dann noch eine Maussteurung für Rotation und Zoom implementiert werden.
*Die Vorlesung heißt "Labor Grafikprogrammierung" und ist eine Vertiefungsvorlesung für die Vorlesung "Graphische Datenverarbeitung I". Der Inhalt ist lustiges OpenGL-Programmieren mit C++.
|
|
|
|
|
|
|
@cms, man glaubt es kaum, aber das DirectX SDK und die enthaltene Dokumentation, beschreibt sehr genau, welche Berechnungen durch die entsprechende Methode umgesetzt wird. Für eine Microsoft Framework ist das sehr ausführlich.
@Achsel: also Ausgabe über Parameter ist völlig legitim. Es ist nur selten notwendig, aber manchmal der eleganteste Weg (siehe TryGetValue, TryParse Methoden im .NET Framework), bei dem man zusätzliche Informationen bereitzustellen, die über den Return-Type hinausgehen und es auch nicht erfordern, diesen zu kapseln.
----------------
Soweit mir bekannt, müssen Parameter in jeder Sprache entsprechend für diesen Zweck markiert werden, in C++ kann ich zum Beispiel nicht einfach einen "int" übergeben und diesen verändern, da muss der "Aufrufer" schon wissen, dass ich einen Zeiger brauche, sonst bekommt er ja einen Compiler-Fehler. In .NET braucht es das "out"-Keyword, womit solche Parameter markiert werden.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von [DK]Peacemaker am 05.08.2010 15:54]
|
|
|
|
|
|
| Zitat von [DK]Peacemaker
@cms, man glaubt es kaum, aber das DirectX SDK und die enthaltene Dokumentation, beschreibt sehr genau, welche Berechnungen durch die entsprechende Methode umgesetzt wird. Für eine Microsoft Framework ist das sehr ausführlich.
| |
Das werde ich mir mal angucken.
|
|
|
|
|
|
|
| Zitat von Achsel-des-Bösen
| Zitat von Klappfallscheibe
Abweichungen davon machen fremden Code nur schwer lesbar:
| |
Ich behaupte: Bullshit. Die "Rückgabe" über Parameter ist völlig legitim.
1.) Sollte man gefälligst mal die Doku von Methoden lesen die man verwendet.
2.) Kann man, wenn man denn wirklich sicher gehen will, Parameter die sich nicht ändern immernoch mit final/const markieren.
| |
Ich hab dir mal was hervorgehoben.
| Zitat von [DK]Peacemaker
(siehe TryGetValue, TryParse Methoden im .NET Framework) | |
Und sowas hätte man nicht über Exceptions lösen können?
| Zitat von [DK]Peacemaker Soweit mir bekannt, müssen Parameter in jeder Sprache entsprechend für diesen Zweck markiert werden, in C++ kann ich zum Beispiel nicht einfach einen "int" übergeben und diesen verändern, da muss der "Aufrufer" schon wissen, dass ich einen Zeiger brauche, sonst bekommt er ja einen Compiler-Fehler. | |
|
Code: |
#include <iostream>
void change_x(int &x);
int main(void)
{
int x = 10;
std::cout << x << std::endl;
change_x(x);
std::cout << x << std::endl;
return 0;
}
void change_x(int &x)
{
x = 5;
} |
|
Compiliert fehlerfrei.
|
|
|
|
|
|
|
Für mich ist eine out-Variable eine "Verglobalisierung" einer Variable und fühlt sich für mich, als beruflich gezwungener Java-Fanboi, falsch an. -> schlechte Kapselung meiner Meinung
|
|
|
|
|
|
|
| Zitat von Klappfallscheibe
| Zitat von [DK]Peacemaker
(siehe TryGetValue, TryParse Methoden im .NET Framework) | |
Und sowas hätte man nicht über Exceptions lösen können?
| |
hat man mit den Parse-Methoden ja auch so gemacht. Es ist aber einfach praktisch, sowas in nem Einzeiler machen zu können. Und da viele Anwender sich da was eigenes gebastelt haben, hat man das halt ab .Net 1.1 oder 2.0 ins Framework integriert. Mir fällt auch beim besten Willen kein Grund ein, das nicht so zu machen. Wenn ich in C# einen out-Parameter an eine Methode übergebe, ist mir allein deshalb schon mehr als klar, daß mit dem Parameter da rumgespielt wird und daß dessen Wert sich ändert.
|
|
|
|
|
|
|
| Zitat von Klappfallscheibe
Und sowas hätte man nicht über Exceptions lösen können?
[b] | |
Die gleichen Methoden existieren, ohne dass "Try", welche dann auch Exceptions werfen. In dem Fall ist das echt praktisch.
| [b]Compiliert fehlerfrei. | |
Mein Fehler, hatte ich anders im Kopf, wegen besagtem "out" in C#.
Ich würde dir ja zustimmen, dass man solche Methoden nur spärlich einsetzen sollte. Ich selbst mag es zum Beispiel nicht, wenn die Ausgabe nur über den Parameter erfolgt. Lediglich, wenn ich sehr einfache Informationen transportieren muss, wie oben angegeben, würde ich davon Gebrauch machen.
Dass das schlechter Stil ist seine Methoden allgemein so zu definieren, wenn man aber über gute Möglichkeiten verfügt, diese entsprechende zu kennzeichnen ("out"), dann entsteht zumindest schon mal keine Verwirrung. Ich nehme auch an, dass Achsel kein Beispiel im Kopf hat, was über meine TryXXX hinaus geht, wo es sinnvoll wäre. Aber gerade da macht es sinn.
Dass man das ganze auch zu weit treiben kann, zeigt ein Blick in die COM-Programmierung, wo das genutzt wird um Status-Codes zurückzugeben, wofür dann extra Makros existieren wie "SUCCEEDED()", "FAILED()" etc. Furchtbar.
-------------
Ohje, ich räum den Post jetzt nicht mehr auf, ich werde halt einfach alt.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von [DK]Peacemaker am 05.08.2010 16:19]
|
|
|
|
|
|
| Zitat von [DK]Peacemaker
Ich nehme auch an, dass Achsel kein Beispiel im Kopf hat, was über meine TryXXX hinaus geht, wo es sinnvoll wäre. Aber gerade da macht es sinn.
| |
Plain old C: fread
|
|
|
|
|
|
|
| Zitat von Achsel-des-Bösen
| Zitat von [DK]Peacemaker
Ich nehme auch an, dass Achsel kein Beispiel im Kopf hat, was über meine TryXXX hinaus geht, wo es sinnvoll wäre. Aber gerade da macht es sinn.
| |
Plain old C: fread
| |
Hab ich eben ungünstig formuliert; fread liefert ja sehr hilfreiche Informationen als Rückgabewert, ähnlich wie die TryXXX-Methoden. Ich hatte jetzt eher an solchen Unsinn wie
|
Code: |
void add(int left, int right, int& sum);
|
|
gedacht.
|
|
|
|
|
|
|
Yeah, gerade auf dem Nachhauseweg mit dem Rad aufs Maul gepackt. Neben diversen Schürfwunden scheine ich mir tatsächlich die Hüfte geprellt zu haben. Laufen ist gerade nicht so angenehm.
|
|
|
|
|
|
|
Gott is Numbers scheisse.
"Wir nehmen Videoaufnahmen von allen möglichen Verkehrsaufnahmen und dann suchen wir Gemeinsamkeiten und tracken das Fahrzeug vom Verdächtigen" und gefühlt keinen Tag später ist das Ergebnis da...
|
|
|
|
|
|
|
Ach was. Die Technik ist da, sieht man ja auch in CSI.
|
|
|
|
|
|
|
|
|
|
|
Ach. Wacken. Thread lesen hilft.
|
|
|
|
|
|
|
| Zitat von Y2Keeper
| Zitat von Iceman3000
Lasst SirSiggi NIEMALS in euer HEIMNETZ oder *trommelwirbel* in "euer" Internet!!
| |
Zu spaet. Wobei er scheinbar oefters mal vergisst sich aus diversen Seiten auszuloggen
| |
Willkommen in deiner Welt.
|
|
|
|
|
|
|
Und ich kann Klappfallscheibe schon verstehen, geht mir naemlich aehnlich. Ich habe da einfach so eine funktionale Weltsicht drin -- Parameter gehen rein, Ergebnis kommt raus. Bei Bedarf halt als Record, Tupel, sonstwas. Out-Parameter "fuehlen sich einfach unsauber an". Wenn schon, dann wirklich mit klar vom Compiler erzwungener Markierung, also "out", oder explizit als Zeiger in C; nach Moeglichkeit auch klar in In- und Out-Argumente getrennt. Gerade das, was call-by-reference in C++ erlaubt, finde ich da schnell verwirrend, wenn man fremden Code liest. Aber Stilfragen sind ein Stueck weit halt Geschmacksfragen.
|
|
|
|
|
|
|
Und das mit TryParse/Parse hatten wir hier doch schonmal. Die Try...-Methoden sind nicht nur einfache Wrapper um die normalen Methoden, die eine Exception fressen, sondern in ihnen wird die Exception gar nicht erst erzeugt. Grund war der Overhead fuer Exceptions, sind also mehr als reine "Convenience"-Funktionen.
|
|
|
|
|
|
|
So, ich habe genug heisse Luft fuer heute abgesondert. Weitermachen.
|
|
|
|
|
|
|
wow, hab selten eine seite gesehen, die so elegant das ganze webframeworkzeug einsetzt wie die hier:
http://www.wolfire.com/comic
sogar das mausrad-kippen macht das, was es soll!
|
|
|
|
|
|
|
| Zitat von rABBI
| Zitat von igor]2
Du hast den Code, den wir dir hier genannt haben, wirklich in einem Produktionssystem verwendet? Uh oh...
| |
als produktiv würde ich das system jetzt nicht unbedingt bezeichnen.
| |
BITTE?
|
|
|
|
|
|
|
So. Inception gesehen.
1) Bei dem vorherigen nachschlagen des Begriffs habe ich die falsche Interpretation gewählt
2) Der Film ist nicht auf Biertrinker ausgelegt. Zumindest war der Druck auf der Blase zum Schluss (nach 2:30h) sehr groß. Hatte eigentlich eine Pause erwartet
3) Die vielen positiven Stimmen haben eine zu hohe Erwartung in mir geschürt. Erwartet habe ich: Das Gefühl wie nach Matrix I damals. Aber das kann wohl kein Film schaffen. Schließlich war ich damals viel jünger und Technik und Inhalt war komplett neu. Inception ist trotzdem ein sehr cooler, lohnender Film. Aber wenn sich die Stadt sphärisch krümmt, beeindruckt das inzwischen leider nicht mehr sonderlich. Zu viel CG überall
Spoiler - markieren, um zu lesen:
4) Das Sopranos-Ende hat mir nicht so gepasst. Wobei man bei den Sopranos mit gewisser Sicherheit sagen konnte, was von den Regisseuren gedacht war. Sprich man wusste, was am Ende passiert ist. Bei Inception ist es wirklich der Phantasie des Besuchers überlassen.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TriggerTG am 05.08.2010 23:50]
|
|
|
|
|
|
|
|
|
|
Ich hab hier ein Forum mit etwa 400 Visitors und 3000-5000 Klicks am Tag. Wenn ich da simple Textanzeigen schalte, wie viel Geld kommt da wohl rein? Genug, dass sich das selbst finanzieren kann?
|
|
|
|
|
|
|
Nüscht, sofern mein Stand von vor 3-4 Jahren noch aktuell ist. Eigentlich müsste es wahrscheinlich sogar noch schlimmer geworden sein. D.h., du musst wahrscheinlich dafür zahlen da Werbung schalten zu dürfen .
|
|
|
|
|
|
|
Das hatte ich befürchtet
Naja, da hat einer was geschrieben dass er bei 1000 Klicks am Tag etwa 50 Cent macht, das würde ja eigentlich reichen für das Forum.
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |