我试图复制这里发现的小程序作为练习的一部分.小程序正在使用Fortune的算法来生成两者; Voronoi图和Delaunay三角剖分.我只对在平面中生成Delaunay三角剖分感兴趣,因此,将使用增量算法,即一次添加1个点.我打算在添加采样点时显示在每个阶段生成的三角形.
我正在使用SwingWorker类来创建包含算法的Triangulate类的实例.我在for循环中调用triangulate方法,当单击GUI上的开始按钮时,它会遍历一组采样点.
这是代码:
JButton startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
SwingWorker<List<Triangle>, Triangle> worker = new SwingWorker<List<Triangle>, Triangle>() {
@Override
protected List<Triangle> doInBackground() throws Exception {
Triangulate dt = new Triangulate(drawingPanel.pointsList());
dt.preTriangulate(); //Set-up a bounding triangle and obtain a random permutation of the points
List<PlanarPoint> pointsList = dt.pointsList();
for (int i = 0; i < pointsList.size(); i++) {
PlanarPoint sample = pointsList.get(i);
dt.triangulate(sample);
List<Triangle> list = dt.trianglesList(); //Obtaining the list of triangles …Run Code Online (Sandbox Code Playgroud)