text: class Region{
      constructor(width, height, size){
          this.width = width;
          this.height = height;
          this.size = size;
      }
  
      addSprite(sprite, x, y){
  
      }
  }
  
  class Sprite{
  
      text = ''
      rotate = 0
      x = None
      y = None
      tree = None
      font_size = None
      img = None
  
      buildTree(){
      }
  }
  
  class QuadTree {
  
      constructor (x1, y1, x2, y2) {
          this.x1 = x1
          this.y1 = y1
          this.x2 = x2
          this.y2 = y2
          this.children = []
      }
  
      // 添加孩子节点
      addChildren (children) {
          this.children = [].concat(this.children, children)
      }
  }
  
  // 检测两个边界bbox是否重叠,矩形重叠检测
  const bboxOverlap = (a, b, posA, posB) => {
      let [ax, ay] = posA
      let [bx, by] = posB
      return a.x1 + ax > b.x0 + bx && ax + a.x0 < bx + b.x1 && ay + a.y1 > by + b.y0 && ay + a.y0 < by + b.y1
  }
  
  const archimedean_spiral = (width, height) => {
      let sprial = (t, offset = 0) => {
          t = offset + t / 5
          let x = parseInt(t * math.cos(t) + (width) % 2)
          let y = parseInt(t * math.sin(t) + (height) % 2)
          return [x, y, t]
      }
      return sprial
  }
  
  
  
  // 检测两棵树是否重叠,四叉树重叠检测,逐层判断
  const treesOverlap = (treeA, treeB, posA, posB) => {
      let [ax, ay] = posA
      let [bx, by] = posB
      if (bboxOverlap(treeA, treeB, posA, posB)) {
          if (!treeA.children.length) {
              if (!treeB.children.length) 
                  return true
              else for (let i = 0, n = treeB.children.length; i < n; i++) {
                  if (treesOverlap(treeA, treeB.children[i], posA, posB)) 
                      return true
              }
          } else for (let i = 0, n = treeA.children.length; i < n; i++) {
              if (treesOverlap(treeB, treeA.children[i], posB, posA)) 
                  return true
          }
      }
      return false
  }
  
  
  
  let words = {'发展': 500, '中国': 169, '人民': 157, '建设': 148, '社会主义': 147, '坚持': 131, '党': 104, '全面': 90, '国家': 90, '实现': 83, '制度': 83, '推进': 81, '特色': 80, '社会': 80, '政治': 80, '新': 78, '加强': 71, '体系': 68, '文化': 66, '时代': 64, '我们': 64, '必须': 61, '经济': 59, '伟大': 58, '完善': 51, '我国': 50, '现代化': 47, '推动': 47, '安全': 46, '创新': 44, '更加': 44, '民主': 44, '中华民族': 43, '改革': 43, '工作': 42, '增强': 39, '不断': 37, '战略': 36, '治理': 36, '领导': 36, '问题': 35, '加快': 35, '深化': 35, '对': 34, '世界': 34, '中': 34, '文明': 33, '复兴': 32, '坚决': 32, '提高': 32, '生态': 32, '基本': 31, '法治': 31, '教育': 31, '思想': 30, '生活': 30, '民族': 30, '重大': 27, '能力': 27, '统一': 27, '促进': 27, '历史': 27, '更': 27, '全党': 25, '构建': 25, '群众': 25, '健全': 24, '国际': 24, '维护': 24, '保障': 24, '建成': 23, '二': 23, '形成': 23, '人类': 23, '解决': 23, '团结': 22, '监督': 22, '理论': 22, '斗争': 22, '实践': 22, '事业': 21, '从': 21, '机制': 21, '协商': 21, '保护': 21, '组织': 21, '政策': 21, '统筹': 20, '实施': 20, '体制': 20, '党内': 20, '合作': 20, '一个': 20, ' 要求': 20, '基础': 20, '支持': 20, '贯彻': 19, '依法治国': 19, '强国': 19, '创造': 19, '共同': 19, '强 化': 19, '中国共产党': 18, '重要': 18, '奋斗': 18, '精神': 18, '政府': 18, '方式': 18, '建立': 18, '反 对': 18, '干部': 18, '全体': 18, '小康社会': 17, '同志': 17, '们': 17, '保持': 17, '全': 17, '军队': 17, '力量': 17, '道路': 17, '让': 17, '始终': 16, '根本': 16, '成为': 16, '有效': 16, '和平': 16, '作用': 16, '梦': 15, '方面': 15, '党的领导': 15, '巩固': 15, '科学': 15, '绿色': 15, '坚定': 15, '香港': 15, '美好生活': 14, '党和国家': 14, '取得': 14, '来': 14, '协调': 14, '深入': 14, '积极': 14, '开展': 14, '持续': 14, '自信': 14, '稳定': 14, '农村': 14, '国防': 14, '澳门': 14, '原则': 14, '强大': 14, '保 证': 14, '自觉': 14, '确保': 14, '发挥': 14, '理念': 13, '主体': 13, '水平': 13, '马克思主义': 13, '管 理': 13, '就业': 13, '强军': 13, '命运': 13, '党的建设': 13, '走': 13, '和谐': 13, '梦想': 13, '革命': 13, '利益': 13, '开放': 13, '基层': 13, '○': 13, '作为': 12, '带领': 12, '全国': 12, '质量': 12, '农业': 12, '繁荣': 12, '扩大': 12, '健康': 12, '全球': 12, '军事': 12, '人民军队': 12, '意识': 12, '突出': 12, '长期': 12, '没有': 12, '将': 12, '进行': 12, '本领': 12, '依法': 12, '深刻': 11, '变化': 11, '勇于': 11, '变革': 11, '当家作主': 11, '广泛': 11, '全民': 11, '体制改革': 11, '核心': 11, '两岸': 11, '具有': 11, '面临': 11, '民生': 11, '各国': 11, '关系': 11, '各种': 11, '引领': 11, '培育': 11, '生产': 11, '现代': 11, '政党': 11, '进入': 10, '继续': 10, '各族人民': 10, '提升': 10, '优化': 10, '领域': 10, '活力': 10, '弘扬': 10, '脱贫': 10, '收入': 10, '环境': 10, '一国两制': 10, '中央': 10, '纪律': 10, '执政': 10, '矛盾': 10, '科技': 10, '明确': 10, '服务': 10, '注重': 10, '人才': 10, '产业': 10, '夺取': 9, '阶段': 9, '使命': 9, '这个': 9, '一定': 9, '与': 9, '五年': 9, '总': 9, '改革开放': 9, '党中央': 9, '五': 9, '作出': 9, '区域': 9, '着力': 9, '权力': 9, '传统': 9, '实力': 9, '覆盖': 9, '牢牢': 9, '活动': 9, '坚强': 9, '目标': 9, '担当': 9, '提出': 9, '提供': 9, '需要': 9, '落实': 9, '同胞': 9, '认识': 9, '结合': 9, '方向': 9, '新型': 9, '参与': 9, '树立': 9, '重点': 9, '培养': 9, '党员': 9, '决胜': 8, '奋斗目标': 8, '以来': 8, '机构': 8, '坚定不移': 8, '有机': 8, '意识形态': 8, '地位': 8, '价 值观': 8, '改善': 8, '引导': 8, '格局': 8, '宪法': 8, '分裂': 8, '共同体': 8, '力': 8, '做': 8, '风险': 8, '考验': 8, '充分': 8, '城乡': 8, '日益增长': 8, '更好': 8, '美丽': 8, '进步': 8, '祖国': 8, '三': 8, '行动': 8, '四': 8, '融合': 8, '自然': 8, '自我': 8, '人大': 8, '主题': 7, '激励': 7, '复杂': 7, '挑战': 7, '历史性': 7, '从严治党': 7, '布局': 7, '增长': 7, '供给': 7, '成果': 7, '立法': 7, '指导': 7, '显著': 7, '全党全国': 7, '应对': 7, '赋予': 7, '大国': 7, '条件': 7, '倡导': 7, '权威': 7, '标准': 7, '最大': 7, '反腐败': 7, '不能': 7, '平衡': 7, '强': 7, '努力': 7, '起来': 7, '正确': 7, '党和人民': 7, '作风': 7, '各项': 7, '共享': 7, '市场': 7, '形式': 7, '生态环境': 7, '两个': 7, '善于': 7, '企业': 7, '导向': 7, '青年': 7, '职责': 7, '党组织': 7, '文艺': 7, '人人': 7, '年': 6, '初心': 6, '动力': 6, '永远': 6, '面对': 6, '一系列': 6, '深化改革': 6, '完成': 6, '前列': 6, '监察': 6, '司法': 6, '优秀': 6, '得到': 6, '中华文化': 6, '中心': 6, '力度': 6, '任务': 6, '方针': 6, '交流': 6, '两岸关 系': 6, '外交': 6, '良好': 6, '学习': 6, '理想信念': 6, '腐': 6, '许多': 6, '存在': 6, '关心': 6, '共同富裕': 6, '公平': 6, '满足': 6, '一百年': 6, '先进': 6, '伟大工程': 6, '系统': 6, '鼓励': 6, '六': 6, '法律': 6, '能够': 6, '防治': 6, '有序': 6, '消费': 6, '网络': 6, '服务体系': 6, '地区': 6, '各类': 6, '防止': 6, '贸易': 6, '行使': 6, '现实': 6, '伟大胜利': 5, '谋': 5, '幸福': 5}
  
  let keys = Object.keys(words)
  keys.s
  ort(function(a, b){
      return words[b] - words[a]
  })
  const font_family = "../font/simhei.ttf"
  const wordW = 180 // 宽度
  const wordH = 200 // 高度
  
  let canvas = document.createElement('canvas')
  canvas.width = wordW
  canvas.height = wordH
  let c = canvas.getContext('2d')
  c.strokeStyle = '#f00'
  
  let svg = d3.select('#main')
              .append('svg')
              .attr('width', '100%')
              .attr('height', '100%')
              .attr('pointer-events', 'all')
              .append('g')
              .attr('transform', 'translate(5, 5)')
  
  