Javascript 创建平滑的随机生成的线
我一直在尝试按照这个示例逐点创建一条平滑的随机生成的线 以下是我的代码片段:Javascript 创建平滑的随机生成的线,javascript,canvas,Javascript,Canvas,我一直在尝试按照这个示例逐点创建一条平滑的随机生成的线 以下是我的代码片段: var ptheta = 50; var theta = 50; var px = 0; var py = 0; var x = 50; var y = 50; var a = 0.3; var rand = 0; var angleVar = 0; function animate(){ rand = Math.random() * (10.0 - 1.0) * 1.0; angleVar =
var ptheta = 50;
var theta = 50;
var px = 0;
var py = 0;
var x = 50;
var y = 50;
var a = 0.3;
var rand = 0;
var angleVar = 0;
function animate(){
rand = Math.random() * (10.0 - 1.0) * 1.0;
angleVar = ((2*rand-1) * a * Math.PI);
theta = ptheta + angleVar;
px = x;
py = y;
r = rand//Math.random() * (10.0 - 1.0) * 1.0;
x = (px + r * Math.cos(ptheta));
y = (py + r * Math.sin(ptheta));
ptheta = theta;
//draw
ctx.lineWidth = 3 //make this random
ctx.beginPath()
ctx.moveTo(this.px, this.py)
ctx.strokeStyle = this.color
ctx.lineTo(this.x, this.y)
ctx.lineCap = "round"
ctx.stroke()
}
看起来代码几乎完成了必要的工作。它确实创建了一个随机生成的行,但我遇到了两个问题:
- 为rand设置一个随机值,用于设置新角度,因为您认为它需要太多的急转弯使用
rand=Math.random()代码>将为您提供介于0-1而不是0-9之间的值
- 为r设置一个单独的随机值,用于控制步长,如
r=Math.random()*20代码>
rand=Math.random()*(10.0-1.0)*1.0
与:rand=Math.random()*9
Math.random()返回一个介于0-1之间的值,这意味着rand将是一个介于0和9之间的值。如果你想让它采取更大的步骤,你可以乘以一个大于9的数字。你完全正确,这似乎解决了这个问题。虽然我更关心的问题是第二个问题,我似乎遵循了算法到了一个T,但这条线似乎仍然有一些急转。如果你能弄明白,我会非常感激的!我用叉子叉起你的笔,做了一些修改:*为rand设置一个随机值,用于设置新角度,因为你认为它需要太急的转弯使用rand=Math.random()
将为您提供介于0-1而不是0-9*之间的值。r有一个单独的随机值,用于控制步长,如r=Math.random()*20代码>你也可以把起始点放在屏幕中间,如果你想通过:<代码> var x=窗口宽度2。变量y=窗内高度/2代码>