Jak nazywacie zmienne odnoszace sie do polozenia w duwymiarowej tablicy

0

Cześć!
Mam duwymiarową tablicę którą traktuje jak "układ kartezjański" tylko że indeksowana jest od lewego górnego rogu (tak jak to zazwyczaj bywa w programowaniu). No i jak nazywacie poszczególne współrzędne dla takiego układu?
[i][j] - Zazwyczaj tak jest stosowane, ale do szybkiego programowania, malo to mówi
[y][x] - no tutaj na myśl przychodzi układ kartezjański który indeksowany byłby inaczej
[row][column] - to wydaje mi się że ma największy sens bo analogicznie podchodzimy do tabel, wierszy. Mówimy "wiersz 3 kolumna 5".
Jenak w głowie kojarze takie oznaczenie
[column][row] - może kojarze je z jakiś tutoriali, ale naturalnie tak zacząłem pisać, co jest odwrotnością rzeczywistości.
Jest na to jakiś ładny standard?

6

Raczej nie ma standardu, a jeśli jest, to szkodzi bardziej niż pomaga — bo wszystko zależy od tego, co trzymam w tej tablicy…

Jak punkty na płaszczyźnie czy piksele, to x, y są normalnym wyborem. Ale jak to, nie wiem, tablica odległości od miasta do miasta, to już start_location, end_location. Macierz liczb? To i, j, chyba że zespolonych, to wtedy znowu x, y. I tak dalej, i tak dalej…

Tablica to jest reprezentacja czegoś do czegoś, więc nazwy mogą — i powinny — te „cosie” oddawać. Dopiero jak się nieda, bo to np. gołe pole do mazania po pamięci, bez żadnej specjalnej struktury (tylko czemu wtedy jest dwuwymiarowe?), albo coś bardziej abstrakcyjnego (współrzędne macierzy mają swoje znaczenie, ale niekoniecznie chcę je oddawać w kodzie), to leci coś krótkiego, jednoliterowego. Przewagi column, row nad x, y nie widzę.

8

Ja ostation używałem [rowNum][cellNum] przy przetwarzaniu excela.
[row][column] i [column][row] sugerują jak będziesz to wyświetlać. Zwykle wiersze są poziome, a kolumny pionowe :P
[y][x] też sugeruje sposób wyświetlania, y oznacza się zwykle na osi poziomej (sa to wiersze), a x na osi pionowej (więc są to kolumny)

0

Dwuwymiarowa tablica to płaszczyzna po której poruszają się obiekty, ryby, robaki. Najrozsądniej będzie użyć [y][x]. Tylko trochę mi nie pasuje dodawać do współrzędnej y żeby obiekt znalzł się niżej :P, no ale to już chyba przesada żeby aż tak na to zwracać uwagę.

1

no ale to już chyba przesada żeby aż tak na to zwracać uwagę.

Też bym tak powiedział. Konwencja wg której oś współrzędnych zaczyna się w lewym gównym rogu (zamiast w lewym dolnym) jest bardzo typowa w grafice komputerowej i tematach pobliskich, zatem raczej nikogo czytającego kod nie zdziwi. Co najwyżej, jeśli czujesz Przymus, to napisz do tego odpowiedni komentarz czy pięć — to może i nie będą najbardziej pomocne komentarze świata, ale i zupełnie nieszkodliwe, bo szansa na to, że kiedyś to zmienisz i komentarz będzie kłamać, jest pomijalnie mała.

2
Suchy702 napisał(a):

Tylko trochę mi nie pasuje dodawać do współrzędnej y żeby obiekt znalzł się niżej :P, no ale to już chyba przesada żeby aż tak na to zwracać uwagę.

WIdać że młody jesteś :P W Pascalu nie rysowałeś po ekranie :D

Jakbym miał właśnie podac jakiś standard dla tej sytuacji byłby to GoToXY z Pascala do rysowania po ekranie w trybie graficznym XD

Description

GotoXY positions the cursor at (X,Y), X in horizontal, Y in vertical direction relative to the origin of the current window. The origin is located at (1,1), the upper-left corner of the window.

0
Suchy702 napisał(a):

Tylko trochę mi nie pasuje dodawać do współrzędnej y żeby obiekt znalzł się niżej

Co to ma być, gra jakaś? Zawsze możesz sobie zamienić. Wystarczy przy rysowaniu zamiast rysować na pozycji y, to rysować na pozycji height - y i będziesz miał rosnące y w górę.

Też bym tak powiedział. Konwencja wg której oś współrzędnych zaczyna się w lewym gównym rogu (zamiast w lewym dolnym) jest bardzo typowa w grafice komputerowej

W 2D tak, ale już w 3D niekoniecznie, często wtedy y do góry idzie.

No i jak nazywacie poszczególne współrzędne dla takiego układu?

Jeżeli to ma być jakaś gra czy grafika, to x, y wydaje się naturalne.
Ale zależy od kontekstu. Gdybyś robił własnego Excela, to row i column też byłoby spoko.

2

... a oprócz nazwy znak i położenie zera pozycji na ekranie wcale nie jest oczywiste

W szkolnych (0,0) jest raczej w lewym dolnym, ale w całym spektrum programowania graficznego były/są przeróżne konwencje

0

Ja spotkałem się tylko z takimi zapisami,
x,y,z gdzie czasem 'y' z 'z' jest zamieniane miejscami przy renderowaniu i trzeba myśleć jakby było odwrócone.
zapis jest normalny jak był, ale niektóre programy mają jako wysokość y, a długość z, a czasem wysokość jest z.

słowne zapisy w większości algebry liniowej bibliotekach jest column, row, depth, cubic.

Tworząc macierz w pamięci często odnosimy się do tego jako, który wiersz i która kolumna, chodź jest to nie odróżnialne dopóki nie zaczniemy tego renderować, kwestia interpretacji.
Ja wolę jak np. mam tensor 1 wymiarowy to myślę o tym mam 3 columny, [a, b, c] i pierwszy parametr odnosi się, do którego elementu w kolumnie, drugi do wiersza, trzeci głębokości itp.

1

Tak na prawdę nie ma czegoś takiego jak dwuwymiarowa tablica. To jest potoczne określenie (uproszczenie) na tablicę która zawiera inne tablice, najczęściej o takiej samej długości, ale to nie jest zasada w większości języków.

Oczywiście możesz użyć tablic lub innych struktur w języku żeby reprezentować jakieś dwuwymiarowe dane, jeśli chcesz.

2
Riddle napisał(a):

Tak na prawdę nie ma czegoś takiego jak dwuwymiarowa tablica. To jest potoczne określenie (uproszczenie) na tablicę która zawiera inne tablice, najczęściej o takiej samej długości, ale to nie jest zasada w większości języków.

To, że czegoś nie ma w Javie, PHP czy Delphi, to jeszcze nie znaczy, że w ogóle nie istnieje.
Oczywiście, że istnieje coś takiego jak dwuwymiarowa tablica, i jest to coś innego niż tablica tablic.

Co do tematu ja używam j i g.

1

Ja zwykle robię tak, że używam do tego celu jednowymiarowej tablicy, tylko przeliczam indeks wg wzoru y * width + x. Chociaż fajnie jakby język to wspierał out of the box (JS nie wspiera, można zrobić tylko tablicę tablic, co mija się z celem).

1 użytkowników online, w tym zalogowanych: 0, gości: 1