news 2026/4/21 17:33:00

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

作者头像

张小明

前端开发工程师

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/4/16 18:35:26

Avalonia UI框架快速上手:跨平台桌面应用开发完全指南

Avalonia UI框架快速上手&#xff1a;跨平台桌面应用开发完全指南 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 还在为桌面应用开发的平台兼容性头疼吗&#xff1f;每次开发…

作者头像 李华
网站建设 2026/4/18 7:31:07

5分钟掌握PlantUML在线编辑器:代码驱动的高效绘图神器

5分钟掌握PlantUML在线编辑器&#xff1a;代码驱动的高效绘图神器 【免费下载链接】plantuml-editor PlantUML online demo client 项目地址: https://gitcode.com/gh_mirrors/pl/plantuml-editor 还在为传统UML工具的复杂操作而头疼吗&#xff1f;PlantUML在线编辑器让…

作者头像 李华
网站建设 2026/4/20 13:26:11

Screen Translator:跨越语言边界的智能翻译革命

在信息爆炸的今天&#xff0c;语言障碍正成为知识获取的最大瓶颈。当你面对外文资料时&#xff0c;是否曾为繁琐的复制粘贴、窗口切换而烦恼&#xff1f;Screen Translator的诞生&#xff0c;正是为了打破这道无形的语言壁垒。 【免费下载链接】ScreenTranslator Screen captur…

作者头像 李华
网站建设 2026/4/18 12:34:56

高效屏幕翻译助手:智能翻译深度使用指南

还在为跨语言沟通的障碍而烦恼吗&#xff1f;Screen Translator项目为你带来革命性的解决方案&#xff0c;将屏幕捕获、OCR识别和智能翻译完美融合。这个开源工具能够实时捕捉屏幕上的任何文字区域&#xff0c;通过先进的文字识别技术提取内容&#xff0c;并调用多种翻译引擎提…

作者头像 李华
网站建设 2026/4/19 19:09:07

iOS微信自动抢红包完整教程:零基础配置到高级技巧

iOS微信自动抢红包完整教程&#xff1a;零基础配置到高级技巧 【免费下载链接】WeChatRedEnvelopesHelper iOS版微信抢红包插件,支持后台抢红包 项目地址: https://gitcode.com/gh_mirrors/we/WeChatRedEnvelopesHelper 还在为错过微信红包而懊恼吗&#xff1f;想要实现…

作者头像 李华
网站建设 2026/4/15 11:24:14

专业指南:掌握Stardew Valley游戏资源自定义的完整流程

专业指南&#xff1a;掌握Stardew Valley游戏资源自定义的完整流程 【免费下载链接】xnbcli A CLI tool for XNB packing/unpacking purpose built for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/xn/xnbcli 在现代游戏模组开发领域&#xff0c;能够自由…

作者头像 李华