zoukankan      html  css  js  c++  java
  • Voronoi Diagram

    1.Voronoi图的定义

    Voronoi图,又叫泰森多边形或Dirichlet图,它是由一组由连接两邻点直线的垂直平分线组成的连续多边形组成。N个在平面上有区别的点,按照最邻近原则划分平面;每个点与它的最近邻区域相关联。Delaunay三角形是由与相邻Voronoi多边形共享一条边的相关点连接而成的三角形。Delaunay三角形的外接圆圆心是与三角形相关的Voronoi多边形的一个顶点。 Voronoi三角形是Delaunay图的偶图。

    Voronoi图示例:

    2.Voronoi图的特点

    (1)每个V多边形内有一个生成元; 
    (2)每个V多边形内点到该生成元距离短于到其它生成元距离; 
    (3)多边形边界上的点到生成此边界的生成元距离相等; 
    (4)邻接图形的Voronoi多边形界线以原邻接界线作为子集。

    3.Voronoi的应用

    在计算几何学科中的重要地位,由于其根据点集划分的区域到点的距离最近的特点,其在地理学、气象学、结晶学、航天、核物理学、机器人等领域具有广泛的应用。如在障碍物点集中,规避障碍寻找最佳路径

    4.js html实现绘画Voronoi图

    <html>  
      <head>  
            <meta charset="utf-8">  
            <title>弦图</title>  
      
      </head> 
        <body>  
            <script src="http://d3js.org/d3.v3.min.js"></script>
        
            <svg></svg>
            <script>
            var width = 960,
            height = 500;
    
            var vertices = d3.range(100).map(function(d) {
                return [Math.random() * width, Math.random() * height];
            });
            console.log(vertices);
    
            var data = d3.geom.voronoi(vertices)
                .map(function(d) {
                    return "M" + d.join("L") + "Z"; 
            });
    
            var svg = d3.select("svg")
            .attr("width", width)
            .attr("height", height);
    
            var path = svg.append("g").selectAll("path");
            path = path.data(data);
    
            var colorScale = d3.scale.category20c();
    
            path
            .enter()
            .append("path")
            .attr({
            "fill":function(d, i) { return colorScale(i) },
            "stroke": "black",
            "d": function(d){ return d }
            });
            
            path.order();
            </script>
            
        </body>  
    </html>  

    运行结果:

  • 相关阅读:
    jetcache 二级缓存使用
    hutool-crypto 依赖 Aes加密,解密
    springboot下的logback-spring配置文件以及使用方式
    docker 实现多个端口映射
    zookeeper部署启动异常,8080端口被占用。
    docker tomcat 文件传递
    关于注解AOP,基于类和方法的实现
    idea 创建file找不到java文件时....
    idea 将项目代码提交到github中
    java第八天---多态、抽象、接口
  • 原文地址:https://www.cnblogs.com/starryxsky/p/7348149.html
Copyright © 2011-2022 走看看