news 2026/9/3 3:43:30

根据自创公式模拟的弹簧系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
根据自创公式模拟的弹簧系统

<!DOCTYPE html>

<html lang="zh-CN">

<head>

    <meta charset="UTF-8">

    <meta content="width=device-width, initial-scale=1.0">

    <title>轮图弹簧系统能量守恒模拟</title>

    <style>

        * {margin: 0; padding: 0; box-sizing: border-box;}

        body {display: flex; flex-direction: column; align-items: center; background: #f0f0f0; font-family: Arial; gap: 10px; padding: 10px;}

        #controls {padding: 12px; background: #fff; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); display: flex; flex-wrap: wrap; gap: 8px; align-items: center;}

        #controls input {width: 100px; padding: 5px; border: 1px solid #ddd; border-radius: 4px;}

        #controls button {padding: 6px 12px; cursor: pointer; border: none; border-radius: 4px; color: #fff;}

        #startBtn {background: #4285f4;}

        #resetBtn {background: #f44336;}

        #connectBtn {background: #4caf50;}

        #energyPanel {padding: 10px 15px; background: #fff; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); min-width: 300px; text-align: left; font-size: 14px;}

        #energyPanel div {margin: 4px 0;}

        #energyPanel span {font-weight: bold; color: #4285f4;}

        #canvas {background: #ffffff; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); touch-action: none;}

        .mode-tip {font-size: 12px; color: #666; margin-top: 5px;}

    </style>

</head>

<body>

    <div>

        节点数: <input type="number" value="6" min="3" max="20">

        最短长度: <input type="number" value="50" min="20" max="200">

        最长长度: <input type="number" value="150" min="50" max="300">

        弹性系数: <input type="number" value="0.05" step="0.01" min="0.01" max="0.5">

        <button>开始/暂停</button>

        <button>重置系统</button>

        <button>开启自定义连接</button>

        <div>当前模式: 正常模拟</div>

    </div>

    <div>

        <div>全局修正能量 H: <span>0.00</span></div>

        <div>能量跳变总和 ΣΦ: <span>0.00</span></div>

        <div>节点平均动能: <span>0.00</span></div>

        <div>节点平均势能修正: <span>0.00</span></div>

    </div>

    <canvas></canvas>

    <script>

        // 1. 初始化画布与参数

        const canvas = document.getElementById('canvas');

        const ctx = canvas.getContext('2d');

        let nodes = [], springs = [];

        let isRunning = false, selectedNode = null, connectMode = false;

        let nodeCount, minLen, maxLen, kVal, centerX, centerY;

        let connectStartNode = null; // 自定义连接起始节点

        // 能量显示DOM

        const totalHElem = document.getElementById('totalH');

        const phiSumElem = document.getElementById('phiSum');

        const avgEkElem = document.getElementById('avgEk');

        const avgVkElem = document.getElementById('avgVk');

        const modeTipElem = document.getElementById('modeTip');

        // 自适应屏幕尺寸

        function resizeCanvas() {

            canvas.width = Math.min(window.innerWidth - 40, 900);

            canvas.height = Math.min(window.innerHeight - 200, 600);

            centerX = canvas.width / 2;

            centerY = canvas.height / 2;

        }

        window.addEventListener('resize', () => {resizeCanvas(); initSystem();});

        // 2. 节点类(优化能量计算稳定性)

        class Node {

            constructor(x, y, id) {

                this.x = x;

                this.y = y;

                this.vx = (Math.random() - 0.5) * 1.5; // 降低初始速度,减少能量波动

                this.vy = (Math.random() - 0.5) * 1.5;

                this.radius = 12;

                this.id = id; // 节点ID,用于自定义连接

                this.Ek = 0; // 局部动能 E(k)

                this.Vk = 0; // 势能修正 V(k)

                this.mass = 2.0; // 引入质量,使能量数值更合理

            }

 

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 1:23:07

如何安全使用NVIDIA Profile Inspector:完整显卡优化实用指南

如何安全使用NVIDIA Profile Inspector&#xff1a;完整显卡优化实用指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是一个专业的显卡优化工具使用指南编写专家&#xff0c;请为NVIDIA Profile …

作者头像 李华
网站建设 2026/9/3 0:40:24

LeaguePrank终极指南:快速安全修改LOL游戏数据的完整方案

LeaguePrank终极指南&#xff1a;快速安全修改LOL游戏数据的完整方案 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank LeaguePrank是一款基于《英雄联盟》LCUAPI开发的创新型工具&#xff0c;能够帮助玩家在不影响游戏平衡的前…

作者头像 李华
网站建设 2026/9/3 1:30:50

基于Arduino Uno R3开发板的智能灯光控制实战案例

用Arduino Uno R3打造你的第一套智能灯&#xff1a;从光感到蓝牙控制&#xff0c;手把手实战你有没有过这样的经历&#xff1f;晚上起夜摸黑开灯刺得睁不开眼&#xff0c;或者白天阳光正好却忘了关灯白白浪费电&#xff1f;其实&#xff0c;这些问题早就有了技术解法——智能照…

作者头像 李华
网站建设 2026/9/2 22:27:08

Windows右键菜单终极清理指南:ContextMenuManager完全教程

Windows右键菜单终极清理指南&#xff1a;ContextMenuManager完全教程 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾经因为右键菜单太杂乱而烦恼&…

作者头像 李华
网站建设 2026/9/2 22:25:48

DownKyi深度解析:解锁B站视频下载的完整解决方案

作为一款专业的B站视频下载工具&#xff0c;DownKyi凭借其强大的功能和简洁的操作界面&#xff0c;为用户提供了从基础下载到高级管理的全方位服务。无论你是想要保存精彩视频&#xff0c;还是需要提取音频内容&#xff0c;这款工具都能满足你的多样化需求。 【免费下载链接】d…

作者头像 李华