Обычно вам следует начинать с самого простого из возможных решений, поэтому в этом случае я бы, вероятно, сделал это со списком точек, где каждая точка выражена в виде двумерного вектора, например,
(def my-polygon (list [0 0] [1 0] [1 1] [0 1]))
Это должно подойти для вашего приложения.
Однако в зависимости от того, как вы в конечном итоге захотите использовать / манипулировать этими полигонами в будущем, есть несколько альтернативных вариантов:
- Если вы хотите взаимодействияс кодом Java (например, рисование многоугольника во фрейме с использованием Swing / Java2D) вы можете использовать экземпляры соответствующего класса Java (например, один из подклассов java.awt.geom.Point2D ) как отдельные баллы.Это даст вам меньше идиоматического кода Clojure, но улучшит взаимодействие с Java
- Возможно, вы захотите использовать вектор вместо списка - особенно если вы собираетесь использовать большие полигоныи применение различных алгоритмов, которым требуется индексированный доступ к отдельным точкам