2011-03-15 27 views
8

Tôi không phàn nàn, chỉ cần tự hỏi. Tại sao Java sử dụng điểm trên cùng bên trái của bề mặt bản vẽ như nguồn gốc? Tôi cho rằng tự nhiên hơn là chọn góc dưới bên trái làm gốc và tăng trục khi chúng đi lên và phải (tương tự như Quartz).Tại sao nguồn gốc Java 2D ở góc trên cùng bên trái?

+0

vì vậy Quartz đang theo cùng một thành ngữ như hệ thống tọa độ Descartes ... Ý tôi là cách bình thường chúng ta đọc một biểu đồ đơn giản ... hmm, một sự mặc khải ... – eee

+0

như mọi người đã bình luận ...Đối với tôi nó luôn luôn có ý nghĩa, trở lại khi đồng bộ đồ họa vẽ với chùm CRT là một nghệ thuật :) Đậu đi từ trên/trái xuống dưới/phải. Miễn là chúng tôi đã sao chép backbuffer của chúng tôi để (0,0) và miễn là bản sao đó là nhanh hơn so với chùm, không có rách/không flicking/etc. – SyntaxT3rr0r

+0

Sau hơn hai thập kỷ của hệ tọa độ Descartes, với (0,0) ở góc dưới bên trái, và quan trọng hơn, y tích cực đi lên, hệ thống trên cùng bên trái với y tích cực đi xuống lẫn lộn và thậm chí làm phiền tôi. Và không có giải thích nào dưới đây thực sự trả lời câu hỏi cho tôi. Tôi nghĩ rằng nó phải làm với sự thuận tiện hoặc tránh các tọa độ âm âm, và tôi sẽ thử một câu trả lời dọc theo những dòng này. – Rok

Trả lời

11

Đồ họa máy tính đã có nguồn gốc ở phía trên bên trái kể từ buổi bình minh của thời gian, với bao gồm QuickDraw. Sử dụng phía dưới bên trái (như trong toán học) là một điều PostScript/PDF. Vì Quartz dựa trên PDF, nó sử dụng tọa độ của nó, nhưng đó chủ yếu là một quyết định duy nhất giữa các thư viện đồ họa.

+0

+1 để giải thích sự khác biệt giữa hệ tọa độ thiết bị video tiêu chuẩn (ULO) và hệ toạ độ Quartz/PostScript/Cartesian (LLO) – eee

-2

Chỉ là lựa chọn triển khai. Các tọa độ màn hình trong các cửa sổ và hệ điều hành khác được đưa ra theo cùng một cách, vì vậy tôi đoán họ đã chọn điều đó để phù hợp với sự lựa chọn của hệ điều hành, đó có thể là một điều kế thừa.

+0

Tôi đồng ý ... nó sử dụng cùng một thành ngữ được sử dụng trong chu kỳ làm mới màn hình của hệ thống con video cũ cho đến ngày nay, thực hiện quét từ trái sang phải, từ trên xuống dưới. – eee

8

Nó luôn hoạt động như thế này.

Quay lại các ngày lắp ráp, pixel một luôn ở góc trên cùng bên trái. Đó là pixel hoặc ký tự đầu tiên mà người dùng có thể đọc.

Cách đánh số thứ này cho phép bạn có hình ảnh hoặc văn bản dài vô hạn. Nếu bạn bắt đầu từ dưới cùng bên trái và bạn muốn thêm một dòng mới, bạn sẽ phải thay đổi tất cả các công cụ của bạn và tính toán lại tọa độ cho tất cả mọi thứ.

+0

Tôi đồng ý ... nó sử dụng cùng một thành ngữ được sử dụng trong chu kỳ làm mới màn hình của hệ thống con video cũ cho đến ngày nay, thực hiện quét từ trái sang phải, từ trên xuống dưới. – eee

+0

cho văn bản này có ý nghĩa (ngoại trừ một số ngôn ngữ có hướng khác nhau, theo chiều ngang hoặc chiều dọc). nhưng không quá nhiều cho hình ảnh và đồ họa. – irreputable

4

Cũng có thể do màn hình CRT, nơi súng điện tử vẽ hình ảnh từ trái sang phải và từ trên xuống dưới.

+0

Tôi đồng ý ... nó sử dụng cùng một thành ngữ được sử dụng trong chu kỳ làm mới màn hình của hệ thống con PC cũ cho đến ngày nay thực hiện quét từ trái sang phải, từ trên xuống dưới. – eee

1

có thể đến từ tiêu chuẩn truyền hình, nơi quét bắt đầu từ trên xuống dưới.

0

Tôi nghĩ là tương thích với các khung thu nhỏ và tối đa hóa
Khu vực lấy nét rõ ràng là nơi từ đầu tiên trong một trang được viết bằng tiếng Anh xuất hiện, cụ thể là, phù thủy trên cùng là cách tự nhiên nhất ngoại trừ khi nói đến đại diện đồ họa của một số toán học trong góc phần tư đầu tiên đã trở thành thứ hai với trục y tích cực (phản ánh hoặc xoay 180 ° về nguồn gốc (tôi đã đến điều này trong khi googling cách để giải quyết điều đó) thực sự quyết định đã được thực hiện thời gian dài trước khi máy tính và tuổi crt

+0

Câu trả lời này không có ý nghĩa nhiều. Phần duy nhất có thể hiểu được là về tiếng Anh bắt đầu từ phía trên bên trái, nhưng điều này liên quan đến khung hình, thu nhỏ và tối đa hóa, hoặc góc phần tư thứ nhất trở thành thứ hai, tôi thực sự không biết. Tôi đọc câu trả lời khoảng 10 lần, và nó vẫn còn khó hiểu hơn là làm rõ. – Rok

3

Nếu bạn quay trở lại đủ xa, như năm 1981, bạn có thể tìm thấy một số ngoại lệ!
http://central.kaserver5.org/Kasoft/Typeset/BBC/Ch08.html

"Hãy tưởng tượng một cửa sổ đồ họa trong đó có các cạnh của nó a, b, c và d 'đơn vị đồ họa đi từ góc dưới bên trái của màn hình (mà luôn luôn là điểm khởi đầu cho đồ họa)."

0

Với hệ tọa độ tay phải, khi X và Y được đặt ở góc trên bên trái, Z đi vào màn hình. Công cụ đồ họa giờ đây có thể biết các điểm xa màn hình ... lớn hơn Z so với các điểm .... rất hữu ích trong việc hiển thị nhiều đối tượng được đặt trong không gian và một số đối tượng đang ẩn ...

+2

Điểm thật và thú vị. Đó là tất cả chỉ là quy ước mặc dù. Tôi không thể thấy sự cần thiết tuyệt đối mà trục Z cần được hướng vào (hoặc ra khỏi) màn hình. –

-2

It cũng có lợi ích tương tự với mảng 2-D trong các chương trình, trong đó [0] [0] đề cập đến phần tử phía trên bên trái.

0

Câu trả lời như "nó luôn như thế này" không thực sự trả lời câu hỏi "tại sao", vì vậy tôi nhầm lẫn là tại sao các câu trả lời bình chọn hàng đầu lại nói rõ nguyên trạng với thông tin bổ sung.

Eric đề cập đến "[trở lại] trong các ngày lắp ráp, pixel luôn ở góc trên cùng bên trái", nhưng anh ấy không đề cập đến lý do tại sao.Anh ấy giải thích rằng nếu chúng ta bắt đầu từ góc dưới bên trái, và muốn thêm một dòng mới vào phần văn bản, thì chúng ta phải làm điều đó bằng cách ghi đè mọi thứ trên màn hình từ dưới lên trên (nếu bạn bắt đầu từ dưới cùng bên trái thời gian trước đó, sau đó bạn đã không để lại không gian cho dòng mới này, công cụ phải được chuyển lên để thêm dòng mới). Người dùng Irreputable nhận xét rằng điều này có ý nghĩa với chỉ một số ngôn ngữ (nhưng tôi không biết bất kỳ ngôn ngữ nào bắt đầu từ dưới lên trên, đó là những gì thực sự quan trọng), và rằng nó không có ý nghĩa nhiều khi nói đến hình ảnh hoặc đồ họa; và tôi đồng ý, anh ấy đúng về cái sau.

Ubieto có lẽ là câu trả lời hữu ích nhất: Điều đó có lẽ liên quan đến cách súng điện tử của màn hình CRT vẽ hình ảnh từ trên xuống dưới, từ trái sang phải. Tuy nhiên, tất cả những câu trả lời này có lẽ bỏ lỡ một điểm quan trọng: Lý do mọi người hỏi một câu hỏi về phía trên bên trái là nguồn gốc của các trục không chỉ là điểm ở trên cùng bên trái, mà còn bởi vì, trái ngược với hệ tọa độ Descartes mà tất cả chúng ta được sử dụng cho tất cả các cách từ trường tiểu học, nơi trục y tăng lên, đồ họa máy tính và hệ tọa độ Java làm tăng trục y xuống dưới! Đây là một trong những khía cạnh khó hiểu và khó hiểu nhất về hệ thống này. Nếu hệ thống có nguồn gốc ở phía trên bên trái của màn hình nhưng giảm trục y (và có số âm) xuống, thì khẩu súng điện tử màn hình CRT sẽ giải thích toàn bộ bí ẩn, ít nhất là đối với tôi. Sau khi tất cả, chúng ta sẽ hiểu tại sao điểm (0,0) ở trên cùng bên trái và mọi thứ khác hoạt động như chúng ta mong đợi từ giáo dục toán học của chúng ta.

Tuy nhiên, đó không phải là trường hợp với hệ thống phối hợp đồ họa Java và máy tính 2D; trục y của hệ thống đó tăng xuống, đủ ngạc nhiên. Tại sao? Tôi nghĩ đó là bí ẩn lớn nhất sau khi chúng tôi xem xét CRT hoặc nguồn gốc của công nghệ màn hình. Và trong một nỗ lực để trả lời câu hỏi này, tôi chỉ có thể nghĩ đến một khả năng: Các nhà khoa học máy tính muốn hệ tọa độ đồ họa 2D đơn giản hơn và tránh nhầm lẫn luôn luôn có tọa độ trục x dương với trục y âm. Nếu chúng ta giả định rằng nguồn gốc trên bên trái là một điều cần thiết do công nghệ màn hình của thời gian với súng điện tử của mình (tránh màn hình rách với công nghệ đó), sau đó chúng tôi nhận ra rằng các nhà khoa học máy tính có thể lựa chọn:

  1. Xử lý màn hình giống như góc phần tư thứ tư, với hệ tọa độ Descartes, với mỗi điểm ảnh trong góc phần tư đó (trên màn hình) có tọa độ trục x dương và tọa độ trục y âm, như (5, -5) ; hoặc

  2. Chúng có thể lật trục y trên trục x (theo chiều dọc xuống dưới), đặt góc phần tư thứ 1 xuống dưới và mỗi pixel trên màn hình sau đó sẽ có cả trục x dương và trục dương , như (5,5). Có lẽ các nhà khoa học máy tính chỉ đơn giản thấy rằng như là một tiện lợi và một cách để làm những điều làm giảm thiểu sự nhầm lẫn; hai số dương có lẽ ít gây nhầm lẫn và dễ tính toán và hình dung hơn số dương và âm.

Tóm lại, có hai khía cạnh cho câu hỏi: Bí ẩn vị trí (0,0) ở trên cùng bên trái thay vì dưới cùng bên trái và bí ẩn trục y tăng xuống dưới. Bí ẩn đầu tiên có lẽ là giải thích tốt nhất bởi công nghệ màn hình ban đầu hoạt động từ trên xuống dưới, từ trái sang phải. Và bí ẩn thứ hai có lẽ là giải thích tốt nhất cho sự đơn giản và rõ ràng thông qua việc áp dụng một hệ tọa độ với hai số dương cho các tọa độ x và y, thay vì hệ thống có khả năng gây nhầm lẫn sẽ vĩnh viễn dựa vào tọa độ trục x dương tọa độ trục y âm.

+0

Tôi không hiểu điểm của bạn ở đây. Tôi nhận được rằng tất cả chúng ta đều vào suy đoán hoang dã, nơi "Nó được thuận tiện tại thời điểm"/"Nó vẫn còn thuận tiện trong một số trường hợp" dường như là câu trả lời được chấp nhận. Những giới hạn của súng điện tử có thể có ý nghĩa, nhưng tôi không hiểu làm sao họ không thể lật súng để lấy trục theo bất kỳ cách nào họ muốn. Hơn nữa, những khẩu súng này được nhắm mục tiêu sử dụng một điện trường có vẻ tầm thường để đảo ngược từ trái sang phải và lên xuống. – Eric

+0

Điểm của tôi được tóm tắt trong đoạn cuối cùng: Hai khía cạnh cho câu hỏi, và mỗi khía cạnh được giải thích bởi một khả năng mạnh mẽ. Và nó không phải là về lật hoặc đảo ngược súng; đó là về việc di chuyển một khẩu súng đến một vị trí hoàn toàn khác, từ trên xuống dưới cùng bên trái, và di chuyển theo hướng ngược lại; Tôi không nghĩ rằng một động thái như vậy sẽ dễ dàng nếu các tiêu chuẩn công nghiệp hoặc nhà máy, có lẽ từ trước màn hình máy tính, dựa trên các TV cũ hơn đã quyết định các vị trí trên cùng bên trái. – Rok

Các vấn đề liên quan