小球的问题 - 长时间的周期运动发生误差

隔了没太长时间,又来发博客了,也算是求助。

之前用js写过一个小动态效果,一列小球依次启动,启动后开始左右往返运动,然后问题来了,虽然刚开始时,小球运动的轨迹堪称完美,但运动过一段时间后,相互之间的间距,就会出现偏差。

下面的图片就是小球在刚启动、运动十分钟和运动了三个钟头时的规整程度,对于一个程序来说,是在是差的天差地远,不知哪位大侠可以解释一下,最后面,是这个小球的完整的代码,有详细的注释,可以直接全部复制,粘贴到一个txt文件中,然后后缀名改为 .html,再用浏览器打开即可,如果出现了乱码(乱码不会影响功能,只是汉字显示出错了),就把文件的编码格式改为UTF-8,就可以了。

我的一位吴姓同学,之前参加过其他编程语言的活动,据他所说,其他语言编写的类似的周期性运算,随着时间的推移,也会出现这种偏差的情况,难道这是所有编程语言都出现的情况?

 

刚开始


十分钟后


三小时后


总的gif动态图


 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 50px;
            height: 50px;
            background-color: skyblue;
            margin: 10px;
            border-radius: 50%;
            position: relative;
            left:0px;
        }
    </style>
</head>
<body>
<button>开始或加速</button>
<button>减速或停止</button>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</body>
<script>

    var rate = 1; //自增的速度
    var most = 35; //最大速度,开始减速时的速度
    var btnArr = document.getElementsByTagName("button");
    var box = document.getElementsByClassName("box");
    var a = [];  // 速度
    var b = true;  //用于记录是否为最初的启动,需要的话,则需要设置时间间隔,逐个启动
    var c = [];  // 位移
    var d = []; //用于判断是否出触发了清除定时器的指令
    var bool = [];  //判断速度a是否大于most或者小于-most
    var count = 0;  //计数器,用于记录“开始或加速”被按下的次数。
    btnArr[0].onclick = function () {
        // 判读是否为最初的启动,是的话,需要设置时间间隔
        if (b) {
            for (var i = 0; i < box.length;i++) {
                setTimeout("fn("+i+")",i*100);
            }
        }else {  // 不是最初的启动,不需要设置时间间隔,只需增加一组计数器,用来再启动或加速
            for (var i = 0; i < box.length;i++) {
                fn(i);
            }
        }
        count++; // 被按下一次按钮,自增
    }
    btnArr[1].onclick = function () {
        //  判断计数器是否为0,是的话说明此时为静止状态,什么也不做
        if (count === 0) {
            return;
        }else { // 不是静止状态,则计数器自减去,同时停止一组定时器,用于减速
            count--;
            for (var i = 0;i < box.length; i++){    // 用于停止一组定时器
                d[i] = true;
            }
        }
    }
    function fn (temp) {
        //  判断a数组的长度是否等于盒子的数量,如果相等,说明不是最初的启动,不用再赋值。
        if (a.length < box.length) {
            a[a.length] = 0;
            c[c.length] = 0;
            bool[bool.length] = true;
            d[d.length] = false;
            b = false;
        }
        var timer;
        timer = setInterval(function() {
            //  判断a的大小,如果小于most,则一直自增,直到大于most,开始自减,直到a小于-most,则再开始自增
            if (bool[temp]) {
                a[temp] += rate;
                if (a[temp] > most) {
                    bool[temp] = false;
                }
            }else {
                a[temp] -= rate;
                if (a[temp] < -most) {
                    bool[temp] = true;
                }
            }
            // 定义盒子的横坐标c为每次加a
            c[temp] += a[temp] ;
            box[temp].style.left = c[temp] + "px";
            //判断d的值,如果为true,说明按下了“停止或加速”,则关闭一组定时器
            if (d[temp]) {
                clearInterval(timer);
                d[temp] = false;    //停止这一组的这个定时器后,再改回false
            }
        },15);
    }
</script>
</html>

 

转载于:https://www.cnblogs.com/qianniaoyu/p/6666804.html

在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值