【D3.js 学习总结】24、D3几何 - 多边形 

简介: # d3.geom.polygon ![](https://img.alicdn.com/tps/TB1dXPjLXXXXXXBXVXXXXXXXXXX-500-506.png) polygon函数有3个用途: * polygon.area() 用来计算多边形面积; * polygon.centroid() 用来计算多边形中心坐标; * polygon.clip(subject)

d3.geom.polygon

polygon函数有3个用途:

  • polygon.area() 用来计算多边形面积;
  • polygon.centroid() 用来计算多边形中心坐标;
  • polygon.clip(subject) 用来处理2个多边形重叠时,返回重叠区域多边形,用来剪切的多边形需要是逆时针方向且是凸多边形;

通过一个示例来展示。

1、数据


  // dataset0 用来做裁切主体,它的坐标需要是逆时针方向
  var dataset0 = [[100,100],[100,300],[300,300],[300,100]];
  var dataset1 = [[200,50],[400,50],[400,400],[200,400]];

2、数据转换

  var data0 = d3.geom.polygon(dataset0);
  var data1 = d3.geom.polygon(dataset1);
  var data2 = data1.slice();//复制一个data1,用来展示重叠的区域

  data0.clip(data2);

通过d3.geom.polygon(dataset1)转换后的数据data1,主要是给数据加了3个方法,如图所示:

裁切后的数据data2就是2个多边形的重叠区域:

3、绘制图形

生成SVG容器


  var width = 500;
  var height = 500;

  var svg = d3.select('body').append('svg').attr({
    width: width,
    height: height
  });

把3个多边形都输出看效果


  svg.append('polygon').attr({
    points: data0,
    stroke: 'black',
    fill: '#ccc'
  })

  svg.append('polygon').attr({
    points: data1,
    stroke: 'black',
    fill: '#eee'
  })

  svg.append('polygon').attr({
    points: data2,
    stroke: 'red',
    fill: 'yellow'
  })

查看在线演示

目录
相关文章
|
2月前
|
Web App开发 JavaScript 前端开发
如何学习JavaScript?
如何学习JavaScript?
55 5
|
2月前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
34 2
|
2月前
|
存储 JavaScript 前端开发
JavaScript学习第一章
本文档介绍了JavaScript的基础知识,包括其在网页中的作用、如何通过JavaScript动态设置HTML元素的CSS属性,以及JavaScript中的变量类型(`var`、`let`、`const`)和数据类型(基本数据类型与引用数据类型)。通过实例代码详细解释了JavaScript的核心概念,适合初学者入门学习。
57 1
|
3月前
|
JavaScript
js学习--商品列表商品详情
js学习--商品列表商品详情
34 2
|
3月前
|
JavaScript
js学习--九宫格抽奖
js学习--九宫格抽奖
25 2
|
3月前
|
JavaScript
js学习--开屏弹窗
js学习--开屏弹窗
51 1
|
3月前
|
JavaScript 前端开发 容器
js之dom学习
js之dom学习
62 0
|
6月前
|
存储 JavaScript 前端开发
|
8月前
|
JavaScript 前端开发
JavaScript学习 -- 内置函数(Math和Date)
JavaScript学习 -- 内置函数(Math和Date)
44 0
|
JavaScript 前端开发
JavaScript学习 -- 内置函数(Math和Date)
JavaScript学习 -- 内置函数(Math和Date)
49 0