Домашнє Завдання 3 - ViriAldi/HomeworkCycle2020 GitHub Wiki
Абстрактні Типи Даних
Lattice ADT
Абстрактний тип даних, який має використовуватися для реалізації сітки ландшафту. Включає такі можливості: створення з 2д масиву, доступ та зміна елементів, незмінність розміру, неперрвний зв'язок точок АДТ з географічними координатами та фізичними вимірами, пошук найкоротшого шляху між 2-ма точками з регулюванням метрики (швидко й ефективно), доступ до 2д-масиву кожного з атрибутів. Як вершини використовує об'єкти Абстрактного Типу Даних Node ADT. Повинен бути пов'язаним з географічними координатами й задовільняти наступний інтерфейс:
-
Lattice(np.adarray, kwargs) - створює об'єкт АДТ з двовимірного масиву numpy. Перетворення відубвається зігдно з параметрами kwargs.
-
Lattice.num_rows() - повертає кількість рядків сітки
-
Lattice.num_cols() - повертає кількість стовпців сітки
-
Lattice[i, j] - доступ до елемента сітки за позицією
-
Lattice[i, j] = value - зміна елемента сітки за позицією
-
Lattice.path(Node1, Node2, kernel) - пошук найкоротшого шляху між двома заданими вершинами
-
Lattice.indexes(coordinates) - повертає позицію в масиві за географічними координатами
-
Lattice.x_2d - повертає стіку як 2д-масив для атрибуту х
-
Lattice.y_2d - повертає стіку як 2д-масив для атрибуту у
-
Lattice.z_2d - повертає стіку як 2д-масив для атрибуту z
Node ADT
Node ADT - обстрактний тип даних, що відповідає за реалізацію вершин сітки, або точки на поверхні Землі. Містить поля, що відповідають за фізичне положення точки, а також містить посилання на її сусідів у сітці (північного, східного, південного, західного), якщо такі існують. Інтерфейс повинен містити такі елементи:
-
Node.get_x - повертає х позицію точки (в м)
-
Node.get_y - повертає у позицію точки (в м)
-
Node.get_z - повертає z позицію точки (в м)
-
Node.distance(Node1, kwargs) - повертає відстань між двома точками, метрика дозволяє штрафувати висоту за допомогою kwargs