Ursprung des Koordinatensystems ändern
Übersicht

TritiumBetreff: Ursprung des Koordinatensystems ändern |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen,
wie kann ich bei Max2D den Ursprung des grafischen Koordinatensystems (also 0,0 mit y-Achse nach unten -> linkshändig) so verändern, dass er dem "normalen" (z.B. mathematischen) Koordinatensystem (Ursprung links unten, y-Achse nach oben -> rechtshändig) entspricht? Bisher hab ich nur SetOrigin fürs verschieben und SetRotation fürs rotieren gefunden, aber nichts, um es von linkshändig in rechtshändig zu ändern. Würd mich freuen, wenn mir da jemand weiterhilft ![]() |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN] SetScale 1,-1 Das könnte hilfreich dafür sein, wobei dann sicher dennoch der Ursprung angepasst werden muss. Allgemein empfehl ich aber die Mathematik in dem Fall zu vergesssen und dich an das Koordinatensystem zu gewöhnen. Es schlichtweg Standard und wird dir immer wieder in der Programmierung so begegnen. EDIT: whoops. Hab das gerade mal ausprobiert. Bei BMax beeinflusst SetScale ja gar nicht die Positionierung wie ich das von anderswo gewöhnt bin. Sorry für die falsche Information! |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
SetOrigin könnte weiterhelfen - allerdings ist die Achse dann immer noch negativ. Am simpelsten wäre es vielleicht, in den Modulcode zu schauen, wie Graphics() arbeitet.
BlitzMax: [AUSKLAPPEN] SuperStrict |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Lobby |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist zwar unschön, aber über SetVirtualResolution würde das Ganze auch klappen. Allerdings muss man mit SetOrigin nachhelfen und bei den Maus-Positions-Funktionen manuell eine Korrektur vornehmen (also bei VirtualMouseX() und VirtualMouseY()).
So sähe das Ganze dann aus in BlitzMax: [AUSKLAPPEN] SuperStrict Mit einem SetScale(1,-1) müsste man noch verhindern, dass auch die Grafiken auf dem Kopf gezeichnet werden, aber ich halte es für fraglich, dass sich der gesamte "Hack" lohnt. |
||
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux |
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wirklich am simpelsten wäre es, sich die paar Zeichenfunktionen, die es gibt, wie gewünscht anzupassen. Um den theoretischen "Unterbau", dass die y-Achse ja eigentlich oben hängt, macht man sich dann einfach gar keine Gedanken mehr - und fertig:
BlitzMax: [AUSKLAPPEN] SuperStrict Wie man sieht, ist dabei auch die Orientierung der Zeichenobjekte auf Links - Unten verlegt worden. Edit: Ich hab' die Mausposition oben original gelassen, um die Umkehrung zu verdeutlichen. Wenn du die angepasste Maus-Interaktion allerdings im Code benötigst, musst du sie dir natürlich ebenso umschreiben, etwa: BlitzMax: [AUSKLAPPEN] Function Mouse_Y%() |
||
Tritium |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
D2006 hat Folgendes geschrieben: Allgemein empfehl ich aber die Mathematik in dem Fall zu vergesssen und dich an das Koordinatensystem zu gewöhnen. Es schlichtweg Standard und wird dir immer wieder in der Programmierung so begegnen.
Normalerweise richte ich mich auch immer nach dem Koordinatensystem, da es beim Programmieren für mich am intuitivsten ist. Diesmal mach ich aber viel mit Vektorrotationen etc. und da ist es praktisch, wenn ich die Sachen, die ich mir auf Papier ausdenke/herleite direkt in den Code übertragen kann, ohne auf Koordinatentransformationen achten zu müssen. Außerdem machts die Fehlersuche einfacher, wenn ich nicht ständig "auf dem Kopf" denken muss ![]() @Blitzmoritz: Ich hab mir jetzt nach Deiner Lösung eine Funktion geschrieben: BlitzMax: [AUSKLAPPEN] Function Y#(value#) Außerdem hab ich rausgefunden, dass man z.B. DrawOval auch eine negative Höhe übergeben kann, sodass der Kreis nach oben gezeichnet wird ![]() Bisher funktioniert die Lösung. Sollte ich noch einen Fehler oder eine Verbesserung finden schreib ichs hier rein. Danke für Eure Hilfe! |
||
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen.
Ich wollte nur anmerken, das es möglich ist die normalen funktionen zu überschreiben: Code: [AUSKLAPPEN] Function Drawrect(x#,y#,w#,h#)
brl.max2d.DrawRect(x,y,w,h) End Function Grüsse |
||
Windows 7 Home Premium 64bit
CPU: Intel Core i5 3450 Ivy Bridge GPU: HIS HD 4870 1GB GDDR5 RAM: 4x 4GB DDR3-SDRAM Dual Channel |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group