• 大小: 21KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: Java
  • 标签: java  ,维诺图  

资源简介

java实现的维诺图,点击即可生成维诺图

资源截图

代码片段和文件信息

package voronoidelaunay;
import java.util.HashSet;
import java.util.linkedList;
import java.util.Queue;
import java.util.Set;

public class Delaunay extends Triangulation {
    
    private Triangle triangleNewInsert = null;  
    public Delaunay (Triangle triangle) {
        super(triangle);
        triangleNewInsert = triangle;
    }
    
    
    public Triangle FindTriangle (Vpoint point) {//找出三角区域中包含该点的三角形
        Triangle triangle = triangleNewInsert;
        if (!this.contains(triangle)) triangle = null;
        Set> visited = new HashSet>();
        while (triangle != null) {
            visited.add(triangle);
            Vpoint corner = point.beOutTri(triangle.toArray(new Vpoint[0]));
            if (corner == null) return triangle;
            triangle = this.neighborFace(corner triangle);
        }
        for (Triangle tri: this) {
            if (point.beOutTri(tri.toArray(new Vpoint[0])) == null) return tri;
        }
        return null;
    }
    
   
    public Set> PointInsert (Vpoint point) {//插入新加入的点
        Set> newTriangles = new HashSet>();
        Set> oldTriangles = new HashSet>();
        Set> hasSet = new HashSet>();
        Queue> queue = new linkedList>();
        Triangle triangle = FindTriangle(point);
        if (triangle == null || triangle.contains(point)) return newTriangles;
        queue.add(triangle);
        while (!queue.isEmpty()) {
            triangle = queue.remove();
            if (point.PointCircleOfTri(triangle.toArray(new Vpoint[0])) == 1) continue;
            oldTriangles.add(triangle);
            for (Triangle tri: this.getNeighbors(triangle)) {
                if (hasSet.contains(tri)) continue;
                hasSet.add(tri);
                queue.add(tri);
            }
        }
        for (Set facet: Triangle.boundary(oldTriangles)) {
            facet.add(point);
            newTriangles.add(new Triangle(facet));
        }
        this.update(oldTriangles newTriangles);
        if (!newTriangles.isEmpty()) triangleNewInsert = newTriangles.iterator().next();
        return newTriangles;
    }
    
  
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-09-28 22:47  voronoi-job\
     文件         301  2014-09-28 16:27  voronoi-job\.classpath
     文件         387  2014-09-28 16:27  voronoi-job\.project
     目录           0  2014-09-28 22:47  voronoi-job\.settings\
     文件         598  2014-09-28 16:27  voronoi-job\.settings\org.eclipse.jdt.core.prefs
     目录           0  2014-09-28 22:50  voronoi-job\bin\
     目录           0  2014-09-28 22:50  voronoi-job\bin\voronoidelaunay\
     文件        3585  2014-09-28 22:50  voronoi-job\bin\voronoidelaunay\Delaunay.class
     文件        4550  2014-09-28 22:50  voronoi-job\bin\voronoidelaunay\PaintPanel.class
     文件        1867  2014-09-28 22:50  voronoi-job\bin\voronoidelaunay\ShowVoronoi.class
     文件        3363  2014-09-28 22:50  voronoi-job\bin\voronoidelaunay\Triangle.class
     文件        4390  2014-09-28 22:50  voronoi-job\bin\voronoidelaunay\Triangulation.class
     文件        5780  2014-09-28 22:50  voronoi-job\bin\voronoidelaunay\Vpoint.class
     目录           0  2014-09-28 22:47  voronoi-job\src\
     目录           0  2014-09-28 22:47  voronoi-job\src\voronoidelaunay\
     文件        2448  2014-09-28 20:32  voronoi-job\src\voronoidelaunay\Delaunay.java
     文件        5535  2014-09-28 20:11  voronoi-job\src\voronoidelaunay\ShowVoronoi.java
     文件        1931  2014-09-28 20:11  voronoi-job\src\voronoidelaunay\Triangle.java
     文件        2608  2014-09-28 20:10  voronoi-job\src\voronoidelaunay\Triangulation.java
     文件        7494  2014-09-28 19:50  voronoi-job\src\voronoidelaunay\Vpoint.java

评论

共有 条评论