我在Clojure中编写了一个算法,它采用了一组代表多边形的点。另一个输入是一个点,输出需要是该点是否位于多边形内部。
我的问题是如何输入函数的点集? clojure中哪种数据结构最合适 - 集合,向量,列表等?
答案 0 :(得分:7)
据推测,点的顺序很重要,因此形状ABCD与ABDC的形状不一样?
在这种情况下,您需要某种保留顺序的数据结构。这意味着列表或向量是可接受的,但是不是。
但是你也可以编写你的函数来获取任何可选的东西 - 所以如果你以后想要从vector更改为list,反之亦然,那么你不必更改你的函数。编程到接口,而不是实现。
答案 1 :(得分:4)
通常你应该从最简单的解决方案开始,所以在这种情况下我可能会用一个点列表来做,每个点都表示为一个二维向量,例如
(def my-polygon (list [0 0] [1 0] [1 1] [0 1]))
这应该适用于您的应用程序。
但是,根据您最终希望如何使用/操纵这些多边形的方法,有一些替代方案需要考虑: