使用不同范数绘制 Voronoi 图

6

我在使用Mathematica(版本8)时遇到了一个大问题。 绘制Voronoi图很简单,但是如何更改范数呢?

<< DiscreteMath`ComputationalGeometry`
data2D = {{4.4, 14}, {6.7, 15.25}, {6.9, 12.8}, {2.1, 11.1}, {9.5, 
14.9}, {13.2, 11.9}, {10.3, 12.3}, {6.8, 9.5}, {3.3, 7.7}, {0.6, 
5.1}, {5.3, 2.4}, {8.45, 4.7}, {11.5, 9.6}, {13.8, 7.3}, {12.9, 
3.1}, {11, 1.1}};
DiagramPlot[data2D, LabelPoints -> False]

给我关于L_2范数(欧几里得范数)的Voronoi图。 我还需要关于L_1范数和L_infinity范数的图。


1
快速查看代码(在v.7中)显示规范是手动实现的,而不是使用Norm。如果使用Norm,您可以通过将代码包装在Block[{Norm = <new norm>}, ...]中来覆盖它。 - rcollyer
我会的,只要我知道怎么做... 我没明白你的意思... - Andreas M.
如果 DiagramPlot 及其组成部分使用了 Norm,那么您可以使用 Block 来覆盖该行为,因为它允许您创建现有符号的局部定义。然而,在内部,它们使用形式 Sqrt[ (a1-b1)^2 + (a2 - b2)^2 + (a3 - b3)^2] 而不是 Norm,因此您不能简单地覆盖该行为。相反,您将不得不重新实现代码以接受不同的标准,因此出现了术语:“roll your own。” - rcollyer
1
您应该用英文编写。 - Dr. belisarius
1
@belisarius,不需要在这里使用“zu”。 - Sjoerd C. de Vries
显示剩余8条评论
1个回答

7

来自Mma帮助文件(仅为近似值):

enter image description here

enter image description here

这段内容涉及到IT技术,具体是用Mma帮助文件中所述的算法实现图像分割。
ColorCombine[{Image[ WatershedComponents[
    DistanceTransform[i, DistanceFunction -> ManhattanDistance]], 
    "Bit"], i, i}]

enter image description here

注意:请注意,沃罗诺伊多边形的凸性属性已经丢失...


@rcollyer 我刚刚花了75美元升级... 值得看看你是否能让你的顾问为此付款。 - user616736
@Yoda,这是我的电脑,所以安装它会让我感到不好。我必须查看IT有哪些学生/教师优惠,其中我认为mma被包括在内。 - rcollyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接