我在Haskell(或者可以从Haskell调用)中寻找计算三角剖分(首选Delaunay三角剖分)的代码,或者寻找Voronoi图。
我已经检查了各种包,我发现与hackage,但他们似乎是旧的,并没有编译与目前的ghc(delaunay,三角测量)或没有很好的记录,我不能让他们编译(eidogg. hgeometry)。
我应该用什么?任何指点都将不胜感激!
我目前使用hgeometry
:
qs :: [Point 2 (RealNumber 5)]
qs = [Point2 0 0, Point2 1 1, Point2 0 2, Point2 2 2]
qsne = fromList qs
t1 = delaunayTriangulation qsne
得到了我无法理解的错误:
Code/Lib/TryDelaunay.hs:65:28: error:
• Couldn't match type ‘Point 2 (RealNumber 5)’
with ‘Point 2 r :+ p’
Expected type: NonEmpty (Point 2 r :+ p)
Actual type: NonEmpty (Point 2 (RealNumber 5))
• In the first argument of ‘delaunayTriangulation’, namely ‘qsne’
In the expression: delaunayTriangulation qsne
In an equation for ‘t1’: t1 = delaunayTriangulation qsne
• Relevant bindings include
t1 :: Triangulation p r (bound at Code/Lib/TryDelaunay.hs:65:1)
2条答案
按热度按时间gxwragnw1#
:+
只是一个“带注解的点”的类型。您可以将任何数据附加到每个点上,而不会影响三角测量。(您可以看到,这不会影响三角测量,因为类型变量p
完全不受约束,即函数无法考虑这些值,它只能存储它们/从结果数据结构中引用它们。)如果你不想添加任何注解......那么,你总是可以添加一个实际上不包含任何信息的注解,方法是写
p :+ ()
。以使其符合
delauneyTriangulation
。yqkkidmi2#
我在这里发布了完整的代码,希望它能帮助其他人。它列出了所有我认为必要的语言扩展和所需的导入(以及依赖项)。欢迎提出改进建议!
-- --模块:如何使用hgeometry中的三角剖分的示例