在没有其他形状的地方创建形状
Creating Shapes Where No Others Exist
我正在尝试使用 CreateJS 想出一种在其他形状不存在的地方创建形状的方法。在这种情况下,我不太确定从哪里开始或什至要搜索什么。基本上,我的目标是让圆圈出现在舞台上,但仅限于其他人没有的地方。
我的问题是,解决这个问题的好方法是什么?是否有任何文档或类似文件可以帮助我实现创建代码来执行此操作?
var stage = new createjs.Stage("canvas"),
canvas = stage.canvas;
function createCircle(){
var circle = new createjs.Shape().set({name:"circle"});
circle.graphics
.beginFill("DeepSkyBlue")
.drawCircle(0, 0, 25);
circle.x = Math.random() * canvas.width;
circle.y = Math.random() * canvas.height;
stage.addChild(circle);
}
setInterval(function(){
createCircle();
stage.update();
}, 1000);
这是一个非常简单的演示,可以填充圆圈,确保它们不会接触。
- 生成随机圆圈大小
- 随机选择一个x/y
- 检查与其他圈子的距离
- 如果没有接触,就在那一点画圆。如果确实触及,请重试
http://jsfiddle.net/lannymcnie/2o7do8kf/1/
// Basic distance checking
var circle = circles[i],
dX = circle.x - x,
dY = circle.y - y,
dist = Math.sqrt(dX*dX + dY*dY);
if (dist <= size + circle.size) {
ok = false;
break;
}
此演示将尝试 100 次(最多)来定位每个圆圈。如果它运行超过 100,它将完全放弃。您可以将其增加到 10,000,它基本上会得到相同的结果。
这显然不是执行此操作的最有效或最复杂的方法,但它可能会得到足够接近您正在寻找的东西而不会疯狂。
我正在尝试使用 CreateJS 想出一种在其他形状不存在的地方创建形状的方法。在这种情况下,我不太确定从哪里开始或什至要搜索什么。基本上,我的目标是让圆圈出现在舞台上,但仅限于其他人没有的地方。
我的问题是,解决这个问题的好方法是什么?是否有任何文档或类似文件可以帮助我实现创建代码来执行此操作?
var stage = new createjs.Stage("canvas"),
canvas = stage.canvas;
function createCircle(){
var circle = new createjs.Shape().set({name:"circle"});
circle.graphics
.beginFill("DeepSkyBlue")
.drawCircle(0, 0, 25);
circle.x = Math.random() * canvas.width;
circle.y = Math.random() * canvas.height;
stage.addChild(circle);
}
setInterval(function(){
createCircle();
stage.update();
}, 1000);
这是一个非常简单的演示,可以填充圆圈,确保它们不会接触。
- 生成随机圆圈大小
- 随机选择一个x/y
- 检查与其他圈子的距离
- 如果没有接触,就在那一点画圆。如果确实触及,请重试
http://jsfiddle.net/lannymcnie/2o7do8kf/1/
// Basic distance checking
var circle = circles[i],
dX = circle.x - x,
dY = circle.y - y,
dist = Math.sqrt(dX*dX + dY*dY);
if (dist <= size + circle.size) {
ok = false;
break;
}
此演示将尝试 100 次(最多)来定位每个圆圈。如果它运行超过 100,它将完全放弃。您可以将其增加到 10,000,它基本上会得到相同的结果。
这显然不是执行此操作的最有效或最复杂的方法,但它可能会得到足够接近您正在寻找的东西而不会疯狂。