Ich sehe das Problem halt immer noch aus Anfängersicht
@Namenloser
Ja, das ist verständlich und plausibel. Allerdings würde ich noch zwischen einem mathematischen Koordinatensystem und dem Canvas (oder Bitmap) unterscheiden.
Der Canvas enthält ja ganze Pixel bzw. Kästchen. Das Kästchen links oben ist bereits komplett zu sehen. Wenn der Nullpunkt der Mittelpunkt des ersten Pixels wäre dürfte dieses nur zu einem Viertel zu sehen sein. Wenn man Pixel[0,0] anspricht, erhält man aber das gesamte Pixel, das auf dem Bildschirm zu sehen ist.
Also Deine Anmerkungen kann ich nachvollziehen für
- Formelberechnungen in einem Koordinatensystem
und
- 3D-Grafiken.
Für 2D-Grafiken sehe ich das noch etwas anders.
Wenn man eine Grafik scaliert kann (und muss) man dazu auf ein 0-basiertes Koordinatensystem zurück greifen.
Für einen einfachen Zugriff auf ein fertiges Bitmap finde ich das wieder nicht sinnvoll.
Letztlich müsste ja nur der Pascal-Interpreter eine 1,1-Basis "vortäuschen" während der Compiler intern mit 0,0 rechnet.
An anderen Stellen vereinfacht der Compiler ja auch Zugriffe auf Daten, die intern komplexer verwaltet werden.
Wenn das Koordinatensystem nicht zwischen den Pixeln sitzen würde, wären Rect.Width und Rect.Right m.E. eindeutiger.
Man kann sich ja den Canvas als Schachbrett vorstellen. Da bezieht man sich ja auch auf die Kästchen und nicht auf die Trennlinien dazwischen.
Dass die Speicherverwaltung (z.B. einer TList) selbst von einem Offset 0-basiert ist, ist auch wieder klar. Das muss ja aber nicht in der Programmiersprache abgebildet werden (wie z.B. String[1] wäre auch List[1] realisierbar gewesen).
@Bug
Klar kann ich mir eine entsprechende Funktion schreiben, ich wollte aber gern mal die grundsätzlichen Meinungen dazu hören.
Man könnte ja generell auch in einer Programmiersprache (z.B. Pascal) entsprechende Regelungen einbauen, die für die Neulinge logischer sind.
Wer sich dann um komplexere mathematische Berechnungen oder z.B. 3D-Grafik kümmern muss oder will könnte auf 0-basierte Berechnungen umrechnen.
Anfänger wären dankbar und Profis hätten keine wirklichen Nachteile.
Ok, ich sehe ein, dass es für einige Belange schon sinnvoll ist.
Für höhere Programmiersprachen hätte man das aber auch wieder vereinfachen können.
Ich hätte das so geregelt und der Programmierer könnte ja bei Bedarf immer noch 1 subtrahieren - wenn notwendig.