Ich versuche, den sichtbaren Teil einer rautenförmigen isometrischen Karte zu rendern. Das "Welt" -Koordinatensystem ist ein kartesisches 2D-System, bei dem die Koordinaten entlang der Achsen diagonal (in Bezug auf das Ansichtskoordinatensystem) zunehmen. Die "Ansicht" -Koordinaten sind einfach Mausversätze relativ zur oberen linken Ecke der Ansicht.
Mein Rendering-Algorithmus zeichnet diagonale Bereiche, beginnend in der oberen rechten Ecke der Ansicht und diagonal nach rechts und unten, bis zur nächsten Zeile, wenn sie die rechte Ansichtskante erreicht. Wenn die Rendering-Schleife die untere linke Ecke erreicht, stoppt sie.
Es gibt Funktionen, um einen Punkt von Ansichtskoordinaten in Weltkoordinaten und dann in Kartenkoordinaten umzuwandeln.
Beim Rendern von Kachel 0,0 funktioniert alles, aber wenn die Ansicht durch das Rendering rollt, muss von einer anderen Kachel ausgegangen werden. Ich kann nicht herausfinden, wie ich feststellen kann, welche Kachel der oberen rechten Ecke am nächsten liegt.
Im Moment konvertiere ich einfach die Koordinaten der oberen rechten Ecke in Kartenkoordinaten. Dies funktioniert so lange, wie sich der Ansichtsursprung (obere rechte Ecke) innerhalb der Welt befindet. Wenn Sie sich jedoch den Rändern der Karte nähern, wird die Koordinate der Startkachel offensichtlich ungültig.
Ich denke, das läuft darauf hinaus zu fragen: "Wie kann ich den Schnittpunkt zwischen der X-Achse der Welt und der X-Achse der Ansicht finden?"