Найти индекс в одном массиве декартовой координаты

Я пытаюсь понять что-то, что должно быть очень простым, но по какой-то причине я просто не могу найти ответ. Я пробовал формулы в течение последних нескольких часов. Возьмите декартову систему координат сетки 10 на 10, то есть от 0,0 до 10,10. Каждой координате назначено число с плавающей запятой (определяющее высоту), и они считываются в число с плавающей запятой [] построчно, первая строка (0,0) — (10,0), вторая строка (0,1) — (10,1). ). Теперь я хочу написать вспомогательный метод для получения высоты определенной декартовой координаты fe: (10, 0). Этот поплавок будет находиться в индексе 9 в float[], а (0, 1) будет находиться в индексе 10. Я пробовал несколько попыток, но каждый раз (0, 0) был упрямым мулом. Вот некоторые из формул, которые я пробовал.

Z = (Y * 10 + X) 
  works for 0, 0 but not really for 10, 0 cause that index should be 9
Z = ((Y * 10 + X) - 1) 
  works for 10, 0 but well not for 0, 0

Однажды я попробовал несколько более сложных, но сейчас не могу их вспомнить, так как мой блокнот, где я их записывал, закрылся без сохранения. Я был бы признателен, если бы кто-то мог направить меня в правильном направлении, но, пожалуйста, используйте простые математические объяснения.


person kenny    schedule 27.07.2014    source источник


Ответы (1)


Если ваша сетка 10 на 10, то это от (0,0) до (9,9). Строка от (0,0) до (10,0) означает 11 элементов подряд, поэтому ваша функция должна быть:

Z = (Y * 11 + X)
person ShayD    schedule 27.07.2014
comment
О боже, я вижу, где я искал неправильно все это время. Некоторый контекст я читаю в растровом изображении как поле высоты, и я предположил, что первый пиксель начинается с (0,0) и заканчивается (10,0). Но, конечно, это неправильно, последний пиксель (9,0). Черт, мне сейчас немного неловко, что я задал этот вопрос в stackoverflow .... - person kenny; 27.07.2014