Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Formel gesucht
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12  Weiter
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Mathe-Forum -> Formel gesucht
 
Autor Nachricht
progs
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 13.06.2005
Beiträge: 61

BeitragVerfasst am: 19 Jun 2005 - 14:32:28    Titel:

Wenn Du mich so fragst, eigentlich gar nichts. Da gehört $i2 hin. Jetzt funktionierst auch.

Ich hasse solche Fehler. Die findet man selber nie...
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 19 Jun 2005 - 14:47:44    Titel:

An diesem Codestück muß noch ordentlich was verändert werden:

Code:

    for($i2 = 0; $i2 < count($map_objects[1]); $i2++) {
        $sektorid = read_str($map_objects[1][$i], "<si>", "</si>");
       
        if($sektorid = $sektor) {
            $startx = read_str($map_objects[1][$i], "<startx>", "</startx>");
            $starty = read_str($map_objects[1][$i], "<starty>", "</starty>");
            $endx = read_str($map_objects[1][$i], "<endx>", "</endx>");
            $endy = read_str($map_objects[1][$i], "<endy>", "</endy>");
            $si_t = explode(",", read_str($map_objects[1][$i], "<si_t>", "</si_t>"));


Was zurzeit (für jeden Strahl) gemacht wird, ist

i) laufe durch alle Wände
ii) Wenn die Wand zum aktuellen Sektor gehört, dann zeichne sie

Das ist nicht ganz so, wie es gedacht war, weil extrem ineffizient. Es sollte so sein

i) Solange nicht fertig auf true gesetzt ist (also eine while schleife)
ii) laufe durch alle Wände des aktuellen Sektors (d.h. man sollte diese in der Map mitspeichern)
iii) Wenn der Strahl die Wand schneidet und die wand transparent ist setze den aktuellen sektor auf den von der anderen Seite der Wand
iv) Wenn der Strahl die Wand schneidet und die wand ist nicht transparent, so setze fertig auf true
progs
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 13.06.2005
Beiträge: 61

BeitragVerfasst am: 19 Jun 2005 - 14:58:33    Titel:

Ich muss das ganze jetzt mal in ein paar Funktionen auslagern. Ansonsten wird das ganze extrem unübersichtlich. Außerdem muss ich mir was überlegen, um die Wände der Sektoren zu speichern.
progs
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 13.06.2005
Beiträge: 61

BeitragVerfasst am: 19 Jun 2005 - 15:39:43    Titel:

Ich muss jetzt leider Offline. Ich melde mich morgen wieder, wenn ichs zum laufen gebracht habe.
progs
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 13.06.2005
Beiträge: 61

BeitragVerfasst am: 20 Jun 2005 - 09:33:57    Titel:

Das ganze schaut jetzt so aus:

http://test.bauer-martin.com/3d/engine.php

Code:
http://test.bauer-martin.com/3d/code.php für enginge.php
http://test.bauer-martin.com/3d/code2.php für functions.inc.php

Es ist auch mal wieder irgend ein kleiner Fehler drinnen, den ich nicht finde. Den hier mal der Vergleich der alten Engine:

http://test.bauer-martin.com/3d/engine2.php
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 20 Jun 2005 - 11:20:55    Titel:

Da muß man auch die äußeren Sektormarkierungen betrachten. Ein Objekt hat ja zwei Sektormarkierungen und diese können sich untereinander vertauschen.

Code:
// Wände Sektor berechnen
function get_sector_walls($objects) {
    for($i = 0; $i < count($objects); $i++) {
        $sektorid = read_str($objects[$i], "<si>", "</si>");
        ^
        Hier muß man auch <so> und </so> anschauen.
        if(!isset($sektori[$sektorid])) {
            $sektori[$sektorid] = 0;
        }
       
        $object[$sektorid][$sektori[$sektorid]] = $objects[$i];
        $sektori[$sektorid]+=1;
    }
    return $object;
}


Ich bin noch nicht bis zur Anwendung dieser Methode angekommen, aber es ist sehr strange, daß diese im Code drin auftaucht. Normal wird eine Map von einem Compiler erzeugt, und dieser berechnet die Listen der Sektorzugehörigkeiten statisch. Aber, wenn Du diese dynamisch berechnen willst, habe ich auch kein Problem damit. Ich werde aber diesen Punkt auch dann nicht mehr erwähnen.
progs
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 13.06.2005
Beiträge: 61

BeitragVerfasst am: 20 Jun 2005 - 12:14:21    Titel:

Zitat:
Da muß man auch die äußeren Sektormarkierungen betrachten. Ein Objekt hat ja zwei Sektormarkierungen und diese können sich untereinander vertauschen.


Das ist jetzt mit eingebaut.

[quote]Ich bin noch nicht bis zur Anwendung dieser Methode angekommen, aber es ist sehr strange, daß diese im Code drin auftaucht. Normal wird eine Map von einem Compiler erzeugt, und dieser berechnet die Listen der Sektorzugehörigkeiten statisch. Aber, wenn Du diese dynamisch berechnen willst, habe ich auch kein Problem damit. Ich werde aber diesen Punkt auch dann nicht mehr erwähnen.[/quote

Wenn die Engine läuft, soll es irgendwann mal einen Compiler geben. Nur ich finde, bis die Engine richtig läuft, wird sich noch einige ändern, und bis dahin macht es noch keinen richtigen Sinn, sowas schon zu programmieren.
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 20 Jun 2005 - 12:59:04    Titel:

Sehe ich ein. Kannst Du bitte nochmal einen Link auf die Karte posten?
progs
Junior Member
Benutzer-Profile anzeigen
Junior Member


Anmeldungsdatum: 13.06.2005
Beiträge: 61

BeitragVerfasst am: 20 Jun 2005 - 13:03:09    Titel:

http://test.bauer-martin.com/3d/map2d.php

Daten werden hier zwar noch aus der DB geholt, sind aber die gleichen wie in der XML-Datei.
algebrafreak
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 28.10.2004
Beiträge: 4143
Wohnort: Passau

BeitragVerfasst am: 23 Jun 2005 - 14:46:43    Titel:

Eine (Teil-)Menge A (des R^2) heißt konvex, wenn für je zwei Punkte x und y aus A die ganze Strecke von x nach y in A liegt. Die Räume von denen wir reden sind genau dann konvex, wenn man von jedem Punkt aus als Spieler jeden anderen sehen kann (durch Drehen). Im wesentlichen sollten alle Räume wie ein wenig verformte reguläre n-Ecke (am allerbesten wie Dreiecke, denn diese sind stets konvex) aussehen. Wenn man diese Bedingung verwirft, so muß man viel zusätzlich machen. Deswegen gibt es bei DOOM einen Level-Compiler, der nicht konvexe Räume durch Trangulation (Dreieckszerlegungen) in konvexe Räume verwandelt. Das ist der selbige, der auch die Sektorzugehörigkeit statisch in der Karte kodiert. Im Allgemeinen ist so eine DOOM Karte von Hand nicht zu machen, da man obige Bedingungen erfüllen muß.

Du mußt Dir, wie Du selbst schon angemerkt hast, keine Gedanken jetzt darüber machen, denn solange Du die Karten per Hand eingibst ist alles unproblematisch, da diese nicht groß werden können. Den Optimierungsschritt kannst Du auch später einbauen.

Wichtig ist jetzt, daß Du im Falle der nichtgesetzten Textur in Rekursion gehst. Und Du brauchst jetzt eine (oder am besten mehrere) Wand, die transparent ist, damit Du sehen kannst, ob alles richtig funktioniert. Außerhalb der Sektoren muß die Darstellung nicht richtig sein (die ist auch bei DOOM nicht richtig, schalte nur die Kollisionsprüfung ab).

Wenn obiges geht fehlt nur ein einziger Schritt: Das sind die Decken, böden und untere und obere Texturen. Das ist das selbe Spielchen, wie bei der Wandprojektion. Nur die Höhe ist dann variabel.
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Mathe-Forum -> Formel gesucht
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12  Weiter
Seite 10 von 12

 
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.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum