gpt4 book ai didi

Javascript 和分割,在 for 循环中崩溃浏览器

转载 作者:行者123 更新时间:2023-11-30 16:39:19 26 4
gpt4 key购买 nike

我正在使用 paper.js 处理一些生成的视觉效果,计划是定义一个随机形状,对其进行分割,然后将这些点也随机化(以不同的程度)。现在,浏览器在尝试分割多边形时崩溃。

我对使用 Javascript 做这些事情还比较陌生,所以也许我对它的期望太高了,显然密集 for 循环中的崩溃只是经常发生的事情。有人有一些提示吗?

var Cloud = function(point) {
this.origin = point;
this.initBound = new Size(600,200);
this.RoM = 40;

var numsides = 6;
var scalingFactor = new Point(1,this.initBound.height/this.initBound.width);

var cloud = new Path.RegularPolygon({
center: this.origin,
sides: numsides,
radius: this.initBound.width/2,
strokeColor: 'black'
});

cloud.scaling = scalingFactor;

var initBoundBox = new Path.Rectangle({
point: new Point(point.x-this.initBound.width/2,point.y-this.initBound.height/2),
size: this.initBound,
strokeColor: 'red'
});

for(var i=0;i<numsides;i++){
var px = cloud.segments[i].point.x;
var py = cloud.segments[i].point.y;

var x = Math.floor(Math.random()*( (px+this.RoM)-(px-this.RoM)+1 ) + (px-this.RoM) );
var y = Math.floor(Math.random()*( (py+this.RoM)-(py-this.RoM)+1 ) + (py-this.RoM) );

var tmpP = new Point(x,y);
cloud.segments[i].point = tmpP;
}

for(var i=0;i<cloud.segments.length-1;i++){
var mdPnt = new Point((cloud.segments[i].point.x+cloud.segments[i+1].point.x)/2,(cloud.segments[i].point.y+cloud.segments[i+1].point.y)/2);
cloud.add(i,mdPnt); //breaking here
}

//cloud.smooth();
}

new Cloud(new Point(500,300));

最佳答案

在最后一个 for 循环中,您在每次迭代中添加一个段,从而将 cloud.segments.length 增加一。你的循环永远不会结束。您可以通过增加 2 而不是 1 或找到更好的二分例程来缓解这种情况。

简而言之,尝试将此作为起点:

for(var i=0;i<cloud.segments.length-1;i+=2){
var mdPnt = new Point((cloud.segments[i].point.x+cloud.segments[i+1].point.x)/2,(cloud.segments[i].point.y+cloud.segments[i+1].point.y)/2);
cloud.add(i,mdPnt); //breaking here
}

关于Javascript 和分割,在 for 循环中崩溃浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32256607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com