javascript画正弦曲线

主要运用的就是css的绝对定位,原理就是用很多的小div拼成曲线图

html

<div id="context">
    <div id="x-coordinate">
        <div id="x-arrow"></div>
    </div>
    <div id="y-coordinate">
        <div id="y-arrow"></div>
    </div>
</div>    

css

#context{
    width:500px;
    height:320px;
    margin:150px auto;
    position:relative;
}
#x-coordinate,#y-coordinate{
    position:absolute;
    left:0;
    background-color:#0000FF;
    z-index:1000;
}
#x-coordinate{
    width:500px;
    height:1px;
    top:160px;
}
#x-arrow,#y-arrow{
    width:0px;
    height:0px;
    border:5px solid transparent;
    position:absolute;
}
#x-arrow{
    border-left-color:#0000FF;
    right:-5px;
    top:-5px;
}
#y-arrow{
    border-bottom-color:#0000FF;
    left:-5px;
    top:-5px;
}
#y-coordinate{
    width:1px;
    height:320px;
    top:0;
}
.metaDiv{
    width:1px;
    height:240px;
    border-top:2px solid #0000FF;
}

js

var metaRadian=(Math.PI*2)/450;
var amplitude=120;
var metaDivs='';
var context=document.getElementById("context");
for(var i=0,len=450;i<len;i++){
    var top_offset=160-Math.ceil(Math.sin(i*metaRadian)*120);
    metaDivs+="<div class='metaDiv' style='position:absolute;left:"+i+"px;top:"+top_offset+"px'></div>";
}
context.innerHTML+=metaDivs;

 

转载于:https://www.cnblogs.com/ckzhou/p/4158386.html

好的,根据您的要求,可以使用HTML5中的<canvas>元素和JavaScript来制作这个动。 首先,在HTML文档中创建一个布元素,并在JavaScript中获取该元素的上下文对象: ```html <canvas id="myCanvas"></canvas> <script> var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); </script> ``` 接下来,绘制正弦曲线和圆点。可以使用数学函数来计算正弦曲线上每个点的坐标,然后使用context.arc()方法绘制圆点: ```javascript //绘制正弦曲线 ctx.beginPath(); for (var x = 0; x < canvas.width; x += 10) { var y = Math.sin(x * Math.PI / 180) * 50 + canvas.height / 2; ctx.lineTo(x, y); } ctx.strokeStyle = "#000"; ctx.stroke(); //绘制圆点 var ball = { x: 0, //圆点的初始横坐标 y: Math.sin(0) * 50 + canvas.height / 2, //计算圆点的纵坐标 radius: 10, //圆点的半径 speed: 1, //圆点的移动速度 draw: function () { //绘制圆点的方法 ctx.beginPath(); ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2); ctx.fillStyle = "red"; ctx.fill(); ctx.closePath(); } }; ball.draw(); //绘制初始位置的圆点 ``` 现在,我们需要通过动来让圆点沿着正弦曲线移动。可以使用requestAnimationFrame()方法来实现动。每一次动帧中,移动圆点的横坐标,并重新绘制圆点: ```javascript function animate() { ctx.clearRect(0, 0, canvas.width, canvas.height); //清除布 ctx.beginPath(); for (var x = 0; x < canvas.width; x += 10) { var y = Math.sin(x * Math.PI / 180) * 50 + canvas.height / 2; ctx.lineTo(x, y); } ctx.strokeStyle = "#000"; ctx.stroke(); ball.x += ball.speed; //移动圆点的横坐标 ball.y = Math.sin(ball.x * Math.PI / 180) * 50 + canvas.height / 2; //计算圆点的纵坐标 ball.draw(); //重新绘制圆点 //显示圆点的坐标 var coordinate = "x: " + ball.x + " , y: " + ball.y; ctx.font = "20px Arial"; ctx.fillStyle = "black"; ctx.fillText(coordinate, 10, 50); requestAnimationFrame(animate); //递归调用animate()方法,形成动帧 } animate(); //启动动 ``` 以上代码可以在浏览器中运行,绘制出一个具有动效果的正弦曲线和圆点,并时刻显示圆点的坐标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值