AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Koordinatensystem und Rects

Ein Thema von stahli · begonnen am 12. Mai 2014 · letzter Beitrag vom 13. Mai 2014
Antwort Antwort
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Koordinatensystem und Rects

  Alt 12. Mai 2014, 22:42
Du hattest aber doch geschrieben:

Ich sehe es eher umgekehrt, man sollte sich in Teilen der Mathematik und im Alltag abgewöhnen, bei 1 anzufangen zu zählen (ich meine das natürlich nur halb ernst, es ist in unseren Köpfen und der Sprache zu etabliert um es zu ändern).
Diese Forderung beruht auf einer Verwechslung: Du verwechselst hier Anzahl mit Index, indem du forderst, man solle beim Zählen ebenfalls mit 0 statt mit 1 beginnen. Beim Index geht es aber nicht um's Zählen, sondern um's Kennzeichnen. Wie kannst du nun behaupten, es ginge dir darum, daß der Index nichts mit der Anzahl zu tun habe?
Es geht hier um Zählen im Sinne von Aufzählen oder Durchzählen. Und dass man beim „Zählen“ wie du es meinst, bei 1 beginnen würde, ist außerdem eine falsche Annahme deinerseits. Vor der Anzahl 1 kommt schließlich die Anzahl 0, nämlich wenn man gar keine Elemente hat. Also kann man nicht sagen, dass man bei 1 anfängt zu zählen.
Es gibt gute Gründe dafür, daß ein Index in der Informatik bei 0 und nicht bei 1 beginnt. Ein Byte kann 256 verschiedene Werte aufnehmen, von 0 bis 255, binär dargestellt von 00000000 bis 11111111. Muß ich noch weiter ausholen?
Ohweia besser nicht, sonst kommt gleich noch der Kryptochef...

Geändert von Namenloser (13. Mai 2014 um 01:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Koordinatensystem und Rects

  Alt 12. Mai 2014, 23:32
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.
Angehängte Grafiken
Dateityp: jpg k.jpg (38,1 KB, 16x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Koordinatensystem und Rects

  Alt 13. Mai 2014, 01:35
Ich denke, die entscheidenden Fragen sind eher:
  • Liegen die ganzzahligen Koordinaten auf den Pixeln oder gerade dazwischen?
  • Liegt die „Umrandung“ des Rechtecks (a) innerhalb oder (b) außerhalb, oder liegt sie (c) genau auf der Grenze? Und worauf beziehen sich jeweils die Koordinaten und die Breite und Höhe?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz