提供的代码创建一个

k-d tree.您可以使用它在矩形上绘制线条,将其划分为更小的矩形.获得树后,可以按如下方式使用它将区域划分为这些矩形:

>在树的根部选择节点.

>通过这一点绘制一条垂直线.

>选择它的左子,在你刚刚通过它的父线绘制的线左侧的这一点画一条水平线(这条线在你刚绘制的线上停止).

>选择它是正确的孩子,在你刚刚通过它的父线绘制的线的右侧绘制一条水平线(此线也在您通过父线绘制的线处停止).

>以递归方式执行此操作,在树的每个级别切换垂直和水平线.

码:

int MAX_HEIGHT = 100;

int MAX_WIDTH = 100;

int NUM_POINTS = 6;

// Generate random list of points

List pointList = new List();

Random rand = new Random();

for(int i = 0; i < NUM_POINTS ; i++)

{

pointList.add(new Point(rand.nextInt(MAX_HEIGHT), rand.nextInt(MAX_WIDTH));

}

BinaryTree tree = CreateKDTree(pointList, 0);

// Recursive function for creating a K-D Tree from a list of points

// This tree can be used to draw lines that divide the space up

// into rectangles.

public BinaryTree CreateKDTree(List pointList, int depth)

{

// Have to create the PointComparator class that just selects the

// specified coordinate and sorts based on that

Coordinate coord= depth % 2 == 0 ? X_COORDINATE : Y_COORDINATE

Collections.sort(pointList, new PointComparator(coord));

int median = pointList.size() / 2;

// unfortunately Java doesn't have a BinaryTree structure so

// you have to create this too

BinaryTree node = new BinaryTree(pointList[median]);

if(pointList.size() == 1) return node;

if(median > 0)

node.left(CreateKDTree(pointList.subList(0, median), depth + 1);

if(median + 1 < subList.size())

node.right(CreateKDTree(pointList.subList(median + 1, subList.size()), depth + 1);

return node;

}

Java随机生成长宽的矩形_java – 将正方形或矩形分解为大量随机大小的正方形或矩形...相关推荐

  1. java随机生成不重复的数组_Java生成不重复的随机数组的方法

    一.JAVA中生成随机数的方式 1.在j2se中使用Math.random()令系统随机选取一个01之间的double类型小数,将其乘以一个数,比如25,就能得到一个025范围内的随机数,这个在j2m ...

  2. java字符串最长回文串_Java中的字符串回文程序

    java字符串最长回文串 Given a string and we have to check whether it is palindrome string or not. 给定一个字符串,我们必 ...

  3. c语言随机生成n个数求最小值,C语言程序:从N个数中随机取出100个不同的数

    /**你题目中的N个数至少得大于100吧.下面的程序N个数是随机生成 你的N个数是?同时这个程序有错误的话请告诉我. */ /* *从N个数中随机取出100个不同的数 *@author:banxi19 ...

  4. python turtle随机生成图形_用 Python Turtle 模块做小游戏 (1) - 随机移动,万花筒和点图...

    最近接触到 Python的一个绘图模块 Turtle,学习以后,发现这是一个很有趣的模块.我们可以利用这个模块进行画图,甚至做一些怀旧的小游戏.这个模块的文档链接如下. 简单的说,可以把画板想象成一个 ...

  5. 随机生成华人姓名的Java工具类:权重 + 随机

    package com.zhengyuxiao.toolbox.random;import java.util.*;/*** @author xzy* @date 2020-12-24 11:55* ...

  6. Pyhton随机生成测试数据模块faker

    1.什么是Faker Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据 ...

  7. hwd分别是长宽高_长宽高是什么意思

    1. 注意:法国及加拿大中转货的长宽高如超过1.2米的价格另议. Note: transit cargo to France and Canada more than 1.2 metres the p ...

  8. 自定义UDF函数:随机生成N位随机数,包含字母,数字

    按需求随机生成N位长度的随机数,随机数中由字母和数字随机组成. import java.util.Random; import org.apache.hadoop.hive.ql.exec.UDF; ...

  9. 在Unity中简单地制作一张2D地图并随机生成资源

    这个作业属于哪个课程 软件工程2022年春-F班 这个作业要求在哪里 软件工程实践总结&个人技术博客 这个作业的目标 课程回顾.个人技术总结 其他参考文献 <构建之法> 目录 一. ...

最新文章

  1. css 不展示滚动条,CSS-界面滚动时不显示滚动条
  2. 外国人评价鸿蒙os2.0发布,鸿蒙os2.0发布以来广获好评,却遭到部分网友指责是披着羊皮的狼...
  3. VTK:可视化算法之BandedPolyDataContourFilter
  4. Linux Shell常用技巧(二)
  5. 代码审计XSS 0day
  6. 北京大学Tensorflow2.0笔记
  7. 51 MM配置-库存管理和实际库存-设置“交货完成”标识
  8. 前端:常用单词(JS,CSS,HTML)
  9. 【Qt串口调试助手】1.4 - 16进制接收/发送
  10. 一周年工作总结--wfdb库使用
  11. Java Caledar类(日历类)判断本周周数
  12. Cy3014学习记录 二--开发软件使用汇总
  13. 飞轮效应中的复利:相信时间的力量
  14. 营销公众号该如何运营大纲
  15. VFB直接使用TCP发送电子邮件源码
  16. Laravel log channel 分组配置
  17. XDOJ 中心对称字符串
  18. Cron表达式范例:每隔5秒执行一次:*/5 * * * * ?
  19. JavaScript日期时间详解
  20. Dbeaver报错:The server time zone value ‘etd‘ is unrecognized

热门文章

  1. 腾讯云安全组规则导出
  2. 使用TFHpple解析html
  3. 云计算之路-阿里云上:拔云见日的那一刻,热泪盈眶
  4. discuz程序的阅读(1)
  5. 阿里巴巴后台的使用体验
  6. 测试ASP.NET 2.0中Gridview控件高级技巧
  7. Google SVN托管和使用学习笔记
  8. C语言不调用库函数画一个三角形
  9. ./4.sh: No such file or directory
  10. STM32项目(三)——通用LIN控制器