2011-03-15 56 views
8

我不抱怨,只是想知道。爲什麼Java使用繪圖表面的左上角作爲原點?我認爲更自然的是選擇左下角作爲原點,並增加軸,因爲它們向上和向右(類似於Quartz)。爲什麼Java 2D原點位於左上角?

+0

所以石英是跟笛卡爾座標系統一樣的習語......我的意思是我們閱讀一個簡單的圖表的正常方式......嗯,什麼樣的啓示... – eee 2011-03-15 03:25:32

+0

大家評論...對我來說,它始終是有道理的,當用CRT的光束繪製同步圖形是一種藝術時:)回到頂端/從左到右/從右到左。只要我們將我們的緩衝器複製到(0,0),並且只要該副本比光束快,就不會有撕裂/不甩/等等。 – SyntaxT3rr0r 2011-03-15 05:26:21

+0

經過二十多年的笛卡爾座標系統,左下角有(0,0),更重要的是,y正向上,這個左上角y向下的系統會混淆,甚至使我惱火。下面的解釋都沒有真正爲我回答這個問題。我認爲這與方便或避免負面的y座標有關,我會嘗試按照這些方法來回答。 – Rok 2015-12-08 12:28:46

回答

11

計算機圖形自從時間拂曉以來就有了左上角的起源,並且包含了QuickDraw。使用左下角(如數學)是一個PostScript/PDF的東西。由於Quartz基於PDF,它使用它的座標,但這主要是圖形庫中唯一的決定。

+0

+1用於解釋標準視頻設備座標系統(ULO)和Quartz/PostScript /笛卡爾座標系統(LLO) – eee 2011-03-15 03:50:07

-2

只是一個實施選擇。 Windows和其他操作系統中的屏幕座標都是以相同的方式給出的,所以我猜測他們選擇的是與操作系統的選擇一致,這可能是遺留問題。

+0

我同意...它採用了與傳統PC視頻子系統的顯示器刷新週期中使用的相同的習慣,即從左到右,從上到下執行掃描。 – eee 2011-03-15 03:22:48

8

它總是這樣工作。

回到裝配日,像素一直位於左上角。這是用戶可以閱讀的第一個像素或字符。

這種編號方式可以讓你有一個無限長的圖像或文字。如果你從左下角開始,你想添加一條新線,你必須移動所有的東西並重新計算一切的座標。

+0

我同意......它採用與傳統PC視頻子系統的顯示刷新週期中使用的相同的習慣,即從左到右,從上到下執行掃描。 – eee 2011-03-15 03:22:26

+0

對於文本來說這是有意義的(除了一些具有不同方向的語言,水平或垂直)。但對於圖像和圖形來說不是那麼重要。 – irreputable 2011-03-15 03:39:48

4

也可能是由於CRT顯示器,電子槍從左到右和從上到下繪製圖像。

+0

之間的差異我同意它採用與傳統PC視頻子系統的顯示刷新週期中使用的相同習慣,直到今天從左到右,從上到下執行掃描。 – eee 2011-03-15 03:20:06

1

可能來自電視標準,其中掃描從上到下。

0

我認爲是與框架最大化和最小化
明顯的重點區域是在一個頁面的第一個字用英文寫的出現,即左上角女巫是當它涉及到除了最自然的方式兼容第一象限中的某些數學的圖形表示,其中y軸爲正數(關於原點反射或旋轉180°)(我使用Google搜索來解決這個問題) 實際上,決定是在很長的時間電腦和crt時代

+0

這個答案沒有多大意義。唯一可以理解的部分是關於從左上角開始的英語,但是這與幀有關,最小化和最大化,或者第一象限成爲第二,我真的不知道。我讀了10次左右的答案,這比澄清更令人困惑。 – Rok 2015-12-08 12:23:47

0

使用右手座標系,當X和Y位於左上角時,Z進入屏幕。圖形引擎現在可以知道遠離屏幕的點...更大的Z遠離點...非常有用於渲染放置在空間中的多個對象並且一些對象隱藏其他對象...

+2

真實有趣的一點。儘管這只是慣例。我看不到Z軸需要直接進入(或退出)屏幕的絕對必要性。 – 2012-06-19 04:34:26

-2

它也具有類似於程序中的二維數組的優點,其中[0] [0]指左上角的元素。

0

像「它總是這樣」的答案並沒有真正回答「爲什麼」的問題,所以我很困惑,爲什麼頂級投票的答案是重新陳述現狀與額外的信息。

Eric提到「[back]在裝配日,像素一直在左上角」,但他沒有提及爲什麼。他繼續解釋,如果我們從左下角開始,並且想要爲文本主體添加一個新行,那麼我們必須從底部向上覆蓋屏幕上的所有內容(如果您已開始從上一次的左下角開始,那麼你沒有留下這條新線的空間;東西必須向上移動才能添加新線)。 User Irreputable評論說,這僅適用於某些語言(但我不知道任何從底部開始的語言,而這正是真正重要的語言),而且它對於圖像或顯卡;我同意,他對後者是正確的。

Ubieto給出了最有幫助的答案:它可能與CRT顯示器的電子槍如何從上到下,從左到右地繪製圖像有關。

但是,所有這些答案可能會錯過一個重要的觀點:人們問左上角這個問題的原因是座標軸的來源不僅僅是左上角的問題,還因爲,與我們所有人都是從小學開始使用的笛卡爾座標系統,y軸向上增加,這個計算機圖形和Java座標系統使y軸向下增加!這是這個系統最棘手和令人困惑的方面之一。如果系統的原點位於屏幕的左上角,但是y軸(負數)下降了,那麼CRT顯示器電子槍真的可以解釋整個謎團,至少對我來說是這樣。畢竟,我們會明白爲什麼(0,0)點位於左上方,其他一切正如我們對數學教育所期望的那樣。

但是,Java和計算機圖形2D座標系不是這種情況;該系統的y軸向下增加,出乎意料地足夠了。爲什麼?我認爲這是我們考慮CRT或屏幕技術起源後最大的謎團。爲了回答這個問題,我只能想到一種可能性:計算機科學家希望2D圖形座標系更簡單,並避免總是將x軸座標正值與負值y軸混淆。如果我們假設左上原點是必然由於其電子槍時的屏幕技術(避免屏幕與技術撕裂),然後我們認識到,計算機科學家們的選擇:

  1. 像笛卡爾座標系一樣處理屏幕,就像笛卡爾座標系一樣,像素中的每個像素(屏幕上)都有一個正的x軸座標和一個負的y軸座標,如(5,-5) ;或

  2. 它們可以在x軸上(垂直向下)翻轉y軸,使第一象限向下,屏幕上的每個像素都將具有正x軸和正y軸座標,像(5,5)一樣。也許計算機科學家簡單地認爲這是一種方便和做事的方式,可以最大限度地減少混淆;兩個正數可能比正數和負數難以混淆,並且易於計算和可視化。

總之,有兩個方面的問題:(0,0)在左邊,而不是左下方的頂部的位置的奧祕,以及y軸的向下增加謎。早期的顯示器技術從上到下,從左到右,可能是最好的解釋。第二個謎題可能最好的解釋是希望簡單明瞭,通過採用一個帶有兩個正數的座標系來表示x和y座標,而不是永久依賴於一個正x軸座標的潛在混淆系統負的y軸座標。

+0

我不明白你的觀點。我得知我們都在瘋狂地猜測「當時很方便」/「在某些情況下仍然很方便」似乎是被接受的答案。電子槍的侷限性可能是有道理的,但我不明白他們如何不能以物理方式翻轉槍來以任何他們想要的方式獲取軸。此外,這些槍的目標是使用一個電場,這個電場似乎是從左到右,從上到下翻轉的微不足道的。 – Eric 2015-12-22 06:27:15

+0

我在最後一段中總結了我的觀點:這個問題有兩個方面,每個方面都有很強的可能性。這不是關於翻轉或翻轉槍;它是關於將槍移動到完全不同的位置,從左上角到左下角,以及朝相反方向移動;如果工業或工廠標準(也許來自PC顯示器之前)基於舊電視決定左上角位置,我認爲這種舉措不會容易。 – Rok 2016-04-12 12:12:49

相關問題