Java随机生成长宽的矩形_java – 将正方形或矩形分解为大量随机大小的正方形或矩形...
提供的代码创建一个
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 – 将正方形或矩形分解为大量随机大小的正方形或矩形...相关推荐
- java随机生成不重复的数组_Java生成不重复的随机数组的方法
一.JAVA中生成随机数的方式 1.在j2se中使用Math.random()令系统随机选取一个01之间的double类型小数,将其乘以一个数,比如25,就能得到一个025范围内的随机数,这个在j2m ...
- java字符串最长回文串_Java中的字符串回文程序
java字符串最长回文串 Given a string and we have to check whether it is palindrome string or not. 给定一个字符串,我们必 ...
- c语言随机生成n个数求最小值,C语言程序:从N个数中随机取出100个不同的数
/**你题目中的N个数至少得大于100吧.下面的程序N个数是随机生成 你的N个数是?同时这个程序有错误的话请告诉我. */ /* *从N个数中随机取出100个不同的数 *@author:banxi19 ...
- python turtle随机生成图形_用 Python Turtle 模块做小游戏 (1) - 随机移动,万花筒和点图...
最近接触到 Python的一个绘图模块 Turtle,学习以后,发现这是一个很有趣的模块.我们可以利用这个模块进行画图,甚至做一些怀旧的小游戏.这个模块的文档链接如下. 简单的说,可以把画板想象成一个 ...
- 随机生成华人姓名的Java工具类:权重 + 随机
package com.zhengyuxiao.toolbox.random;import java.util.*;/*** @author xzy* @date 2020-12-24 11:55* ...
- Pyhton随机生成测试数据模块faker
1.什么是Faker Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据 ...
- hwd分别是长宽高_长宽高是什么意思
1. 注意:法国及加拿大中转货的长宽高如超过1.2米的价格另议. Note: transit cargo to France and Canada more than 1.2 metres the p ...
- 自定义UDF函数:随机生成N位随机数,包含字母,数字
按需求随机生成N位长度的随机数,随机数中由字母和数字随机组成. import java.util.Random; import org.apache.hadoop.hive.ql.exec.UDF; ...
- 在Unity中简单地制作一张2D地图并随机生成资源
这个作业属于哪个课程 软件工程2022年春-F班 这个作业要求在哪里 软件工程实践总结&个人技术博客 这个作业的目标 课程回顾.个人技术总结 其他参考文献 <构建之法> 目录 一. ...
最新文章
- css 不展示滚动条,CSS-界面滚动时不显示滚动条
- 外国人评价鸿蒙os2.0发布,鸿蒙os2.0发布以来广获好评,却遭到部分网友指责是披着羊皮的狼...
- VTK:可视化算法之BandedPolyDataContourFilter
- Linux Shell常用技巧(二)
- 代码审计XSS 0day
- 北京大学Tensorflow2.0笔记
- 51 MM配置-库存管理和实际库存-设置“交货完成”标识
- 前端:常用单词(JS,CSS,HTML)
- 【Qt串口调试助手】1.4 - 16进制接收/发送
- 一周年工作总结--wfdb库使用
- Java Caledar类(日历类)判断本周周数
- Cy3014学习记录 二--开发软件使用汇总
- 飞轮效应中的复利:相信时间的力量
- 营销公众号该如何运营大纲
- VFB直接使用TCP发送电子邮件源码
- Laravel log channel 分组配置
- XDOJ 中心对称字符串
- Cron表达式范例:每隔5秒执行一次:*/5 * * * * ?
- JavaScript日期时间详解
- Dbeaver报错:The server time zone value ‘etd‘ is unrecognized