百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

用AI大模型写一个动态演示正弦函数图像的课件

ztj100 2025-03-01 16:13 36 浏览 0 评论

这里我们使用豆包AI,写出我们的要求:
生成一个html页面,页面中央放一个canvas画布,第一层绘制一个坐标系,x坐标刻度为-1.0pi,-0.5pi,0,0.5pi,1.0pi,y坐标刻度是-1,0,1,第二层绘制一个正弦函数曲线图:a*sin(x)+b,canvas上面放4个按钮,一个文字是a+,一个文字是a-,一个文字是b+,一个文字是b-,写一个javascript函数,点击a+,则a的值增加0.1pi,点击a-,则a的值减少0.1pi,点击b+,则b的值增加0.1pi,点击b-,则b的值减少0.1pi,写出完整的html和内置的javascrit代码

豆包回答如下:

我们复制这段代码,然后新建一个记事本文件,把豆包AI生成的代码复制进去,并保存为sinx.html。

然后我们双击这个html文件,就能在浏览器中看到这个课件的界面了。

然后我们点击a-按钮,看看效果。波形幅度明显变化了。

再点击b+按钮,看看效果,波形整体上移了。

下面是完整的html代码。

Bash




    
    
    Sine Wave Plotter
    
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }

        #controls {
            position: absolute;
            top: 10px;
        }
    



    
        a+
        a-
        b+
        b-
    
    
    
        // 获取 canvas 元素和绘图上下文
        const canvas = document.getElementById('myCanvas');
        const ctx = canvas.getContext('2d');

        // 初始化参数 a 和 b
        let a = 1;
        let b = 0;

        // 定义绘制坐标系的函数
        function drawAxes() {
            const width = canvas.width;
            const height = canvas.height;
            const centerX = width / 2;
            const centerY = height / 2;

            // 绘制 x 轴
            ctx.beginPath();
            ctx.moveTo(0, centerY);
            ctx.lineTo(width, centerY);
            ctx.strokeStyle = 'black';
            ctx.stroke();

            // 绘制 y 轴
            ctx.beginPath();
            ctx.moveTo(centerX, 0);
            ctx.lineTo(centerX, height);
            ctx.stroke();

            // 绘制 x 轴刻度
            const xLabels = ['-1.0π', '-0.5π', '0', '0.5π', '1.0π'];
            const xValues = [-Math.PI, -0.5 * Math.PI, 0, 0.5 * Math.PI, Math.PI];
            for (let i = 0; i < xLabels.length; i++) {
                const x = centerX + (xValues[i] / Math.PI) * (width / 2);
                ctx.fillText(xLabels[i], x - 10, centerY + 20);
                ctx.beginPath();
                ctx.moveTo(x, centerY - 5);
                ctx.lineTo(x, centerY + 5);
                ctx.stroke();
            }

            // 绘制 y 轴刻度
            const yLabels = ['-1', '0', '1'];
            const yValues = [-1, 0, 1];
            for (let i = 0; i < yLabels.length; i++) {
                const y = centerY - yValues[i] * (height / 2);
                ctx.fillText(yLabels[i], centerX - 20, y + 5);
                ctx.beginPath();
                ctx.moveTo(centerX - 5, y);
                ctx.lineTo(centerX + 5, y);
                ctx.stroke();
            }
        }

        // 定义绘制正弦函数曲线的函数
        function drawSineWave() {
            const width = canvas.width;
            const height = canvas.height;
            const centerX = width / 2;
            const centerY = height / 2;

            ctx.beginPath();
            for (let x = -Math.PI; x <= Math.PI; x += 0.01) {
                const y = a * Math.sin(x) + b;
                const pixelX = centerX + (x / Math.PI) * (width / 2);
                const pixelY = centerY - y * (height / 2);
                if (x === -Math.PI) {
                    ctx.moveTo(pixelX, pixelY);
                } else {
                    ctx.lineTo(pixelX, pixelY);
                }
            }
            ctx.strokeStyle = 'blue';
            ctx.stroke();
        }

        // 定义更新画布的函数
        function updateCanvas() {
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            drawAxes();
            drawSineWave();
        }

        // 绑定按钮点击事件
        document.getElementById('a-plus').addEventListener('click', function () {
            a += 0.1 * Math.PI;
            updateCanvas();
        });

        document.getElementById('a-minus').addEventListener('click', function () {
            a -= 0.1 * Math.PI;
            updateCanvas();
        });

        document.getElementById('b-plus').addEventListener('click', function () {
            b += 0.1 * Math.PI;
            updateCanvas();
        });

        document.getElementById('b-minus').addEventListener('click', function () {
            b -= 0.1 * Math.PI;
            updateCanvas();
        });

        // 初始化画布
        updateCanvas();
    


相关推荐

SpringBoot整合SpringSecurity+JWT

作者|Sans_https://juejin.im/post/5da82f066fb9a04e2a73daec一.说明SpringSecurity是一个用于Java企业级应用程序的安全框架,主要包含...

「计算机毕设」一个精美的JAVA博客系统源码分享

前言大家好,我是程序员it分享师,今天给大家带来一个精美的博客系统源码!可以自己买一个便宜的云服务器,当自己的博客网站,记录一下自己学习的心得。开发技术博客系统源码基于SpringBoot,shiro...

springboot教务管理系统+微信小程序云开发附带源码

今天给大家分享的程序是基于springboot的管理,前端是小程序,系统非常的nice,不管是学习还是毕设都非常的靠谱。本系统主要分为pc端后台管理和微信小程序端,pc端有三个角色:管理员、学生、教师...

SpringBoot+LayUI后台管理系统开发脚手架

源码获取方式:关注,转发之后私信回复【源码】即可免费获取到!项目简介本项目本着避免重复造轮子的原则,建立一套快速开发JavaWEB项目(springboot-mini),能满足大部分后台管理系统基础开...

Spring Boot的Security安全控制——认识SpringSecurity!

SpringBoot的Security安全控制在Web项目开发中,安全控制是非常重要的,不同的人配置不同的权限,这样的系统才安全。最常见的权限框架有Shiro和SpringSecurity。Shi...

前同事2024年接私活已入百万,都是用这几个开源的SpringBoot项目

前言不得不佩服SpringBoot的生态如此强大,今天给大家推荐几款优秀的后台管理系统,小伙伴们再也不用从头到尾撸一个项目了。SmartAdmin...

值得学习的15 个优秀开源的 Spring Boot 学习项目

SpringBoot算是目前Java领域最火的技术栈了,除了书呢?当然就是开源项目了,今天整理15个开源领域非常不错的SpringBoot项目供大家学习,参考。高富帅的路上只能帮你到这里了,...

开发企业官网就用这个基于SpringBoot的CMS系统,真香

前言推荐这个项目是因为使用手册部署手册非常...

2021年超详细的java学习路线总结—纯干货分享

本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础...

jeecg-boot学习总结及使用心得(jeecgboot简单吗)

jeecg-boot学习总结及使用心得1.jeecg-boot是一个真正前后端分离的模版项目,便于二次开发,使用的都是较流行的新技术,后端技术主要有spring-boot2.x、shiro、Myb...

后勤集团原料管理系统springboot+Layui+MybatisPlus+Shiro源代码

本项目为前几天收费帮学妹做的一个项目,JavaEEJSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。一、项目描述后勤集团原料管理系统spr...

白卷开源SpringBoot+Vue的前后端分离入门项目

简介白卷是一个简单的前后端分离项目,主要采用Vue.js+SpringBoot技术栈开发。除了用作入门练习,作者还希望该项目可以作为一些常见Web项目的脚手架,帮助大家简化搭建网站的流程。...

Spring Security 自动踢掉前一个登录用户,一个配置搞定

登录成功后,自动踢掉前一个登录用户,松哥第一次见到这个功能,就是在扣扣里边见到的,当时觉得挺好玩的。自己做开发后,也遇到过一模一样的需求,正好最近的SpringSecurity系列正在连载,就结...

收藏起来!这款开源在线考试系统,我爱了

大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!今天小编推荐一款基于Spr...

Shiro框架:认证和授权原理(shiro权限认证流程)

优质文章,及时送达前言Shiro作为解决权限问题的常用框架,常用于解决认证、授权、加密、会话管理等场景。本文将对Shiro的认证和授权原理进行介绍:Shiro可以做什么?、Shiro是由什么组成的?举...

取消回复欢迎 发表评论: