Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Koordinatensystem und Rects (https://www.delphipraxis.net/180331-koordinatensystem-und-rects.html)

Namenloser 13. Mai 2014 00:35

AW: Koordinatensystem und Rects
 
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?

Sir Rufo 13. Mai 2014 11:02

AW: Koordinatensystem und Rects
 
Zitat:

Zitat von stahli (Beitrag 1258640)
Auch verstehe ich nicht ganz, warum ein definiertes Rect.Create(Point(1,1),5,5) nachher in Rect.Right = 6 enthält.
Im Moment bezeichnet Rect.Right nicht das letzte Pixel eines Rects sondern das rechts daneben.
Wenn man von 1 an 5 Pixel zählt liegt das letzte aber bei 5. Von 1 bis 5 sind also 5 Pixel belegt, die Breite ist 5 und das letzte (rechte) Pixel liegt bei 5 (nicht bei 6).

Irgendwie finde ich das unlogisch.

Es hört sich unlogisch an, liegt aber daran, dass Punkte keine Flächen sind und eine Fläche keine Punkte :)
(Tolle Erklärung ... ok, ich versuche es mal besser)

Diese Fläche wird beschrieben durch die Punkte (nicht mit Pixeln verwechseln) [P(0,0),P(2,2)] => Die Fläche fängt bei P(0,0) and und hört bei P(2,2) auf.
Code:
  0   1   2
0 +---+---+
  | * | * |
1 +---+---+
  | * | * |
2 +---+---+
Ein Pixel ist hingegen eben auch eine Fläche und wenn man einen Pixel zeichnet, dann muss man die Zeichenfläche etwas anders organisiert betrachten (da sich ja auch der Kontext/die Betrachtungsweise geändert hat)
Code:
    0   1
  +---+---+
0 | * |   |
  +---+---+
1 |   |   |
  +---+---+
Ein Pixel Px(0,0) ist gleichzusetzen mit einer Fläche [P(0,0),P(1,1)] (eine Fläche mit der Höhe 1 und Breite 1)

Diese Unterschiede werden aber sprachlich nicht korrekt hervorgehoben.
Delphi-Quellcode:
type
  TRect = record
    function Contains(const Pt: TPoint): Boolean;
  end;
bezieht sich nicht auf die Punkte, sondern auf die Pixel!
Zitat:

Ein Punkt, der sich auf der oberen (Top) oder linken (Left) Seite des Rechtecks befindet, wird als im Rechteck befindender Punkt betrachtet, während ein Punkt, der sich auf der rechten (Right) oder unteren (Bottom) Seite befindet, als außerhalb des Rechtecks befindender Punkt betrachtet wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz