平滑随机线,带循环,使用 Raphael/JS

发布于 2024-10-30 21:49:27 字数 1088 浏览 3 评论 0原文

$(document).ready(function(){
    var x1 = Math.random()*$(window).width(); var y1 = Math.random()*$(window).height();
    var x2 = 1; var y2 = 1;
    var paper = Raphael(document.body);

    setInterval(function() {
        randx = Math.random(); randy = Math.random();
        if (randx > 0.9) {
            if (x2 = 1) {
                if (randx > 0.99) x2 = -1;
            }
            else if (x2 = -1) {
                if (randx > 0.99) x2 = 1;
            }
        } else x2 = 0;
        if (randy > 0.9) {
            if (y2 = 1) {
                if (randy > 0.99) y2 = -1;
            }
            else if (y2 = -1) {
                if (randy > 0.99) y2 = 1;
            }
        } else y2 = 0;
        paper.path("M"+x1+" "+y1+"L"+(x1+x2)+" "+(y1+y2));
        x1 = x1+x2;
        y1 = y1+y2;
    }, 0);  
});

这是我的“随机线”生成脚本。我知道它看起来一定很糟糕,我只是在学习。但我试图得到类似的东西: https://i.sstatic.net/R7Kkv.png

我真的很感激算法的一些提示/建议,这些提示/建议将使线路更平滑,更有可能掉头等。

谢谢

$(document).ready(function(){
    var x1 = Math.random()*$(window).width(); var y1 = Math.random()*$(window).height();
    var x2 = 1; var y2 = 1;
    var paper = Raphael(document.body);

    setInterval(function() {
        randx = Math.random(); randy = Math.random();
        if (randx > 0.9) {
            if (x2 = 1) {
                if (randx > 0.99) x2 = -1;
            }
            else if (x2 = -1) {
                if (randx > 0.99) x2 = 1;
            }
        } else x2 = 0;
        if (randy > 0.9) {
            if (y2 = 1) {
                if (randy > 0.99) y2 = -1;
            }
            else if (y2 = -1) {
                if (randy > 0.99) y2 = 1;
            }
        } else y2 = 0;
        paper.path("M"+x1+" "+y1+"L"+(x1+x2)+" "+(y1+y2));
        x1 = x1+x2;
        y1 = y1+y2;
    }, 0);  
});

This is my "random line" generating script. I know it must look terrible, I am just learning. But I am trying to get something resembling this: https://i.sstatic.net/R7Kkv.png

I'd really appreciate some tips/suggestions for the algorithm that will make the line smoother and more likely to turn do a u-turn etc.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

东风软 2024-11-06 21:49:27

答案是在前一个点周围的 40x40 左右的框中生成点,并使用三次样条在它们之间进行插值。

The answer is to generate points within a 40x40 or so box around the previous point, and interpolate between them with a cubic spline.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文