网站首页 > 知识剖析 正文
在我们通过canvs画图的时候经常会用到圆,且需要计算出圆上某点的坐标,由于我数学没学好,总是记不得怎么获取,这里记录下,加深记忆。
这里面用到了我们以前学过的三角函数,可以通过三角函数来计算圆上的位置。
如下:在直角坐标系中圆点O(0,0) ,半径为OP,求圆上点P的坐标x,y.
我们可以通过sinθ = y/r . cosθ = x/r 两个公式来分别获得坐标x和y.
那么 x = cosθ * r,然后对于角度的计算则是 θ = Math.PI * 2 / 360 * 度数(0-360),那么可以得到
- x = Math.cos(Math.PI * 2 / 360 * 度数) * r
- y = Math.sin(Math.PI * 2 / 360 * 度数) * r.
下面,我们根据这个公式来画一个圆,以圆上的点为圆心画多个小圆。 如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>canvas练习</title>
<style type="text/css">
html,body{width:100%;height:100%;margin:0px;padding:0px;overflow:hidden;}
canvas{background-color:#49e;}
</style>
</head>
<body></body>
</html>
<script type="text/javascript">
var canvas = {
init () {
this.ele = document.createElement('canvas');
document.body.appendChild(this.ele);
this.ctx = this.ele.getContext('2d');
this.width = this.ele.width = window.innerWidth;
this.height = this.ele.height = window.innerHeight;
return this;
},
//画圆与小圆
draw (){
let r = 150,//半径50
lr = 5;//小圆半径
this.ctx.strokeStyle = 'white';
this.ctx.arc(this.width/2,this.height/2,r,0,Math.PI * 2);
this.ctx.stroke();
//画小圆,i 为度数,共有360°
for(let i=0;i<=360;i+= 30){
//获得圆上坐标
this.ctx.beginPath();
let x= Math.cos(Math.PI * 2 / 360 * i) * r,
y = Math.sin(Math.PI * 2 / 360 * i) * r;
this.ctx.arc(this.width/2+x,this.height/2 + y,lr,0,Math.PI * 2);
this.ctx.stroke();
this.ctx.closePath();
}
}
};
canvas.init().draw();
</script>
噔噔噔噔,效果出来啦..虽然很简单,但是初学的时候总是有莫名的成就感.. 哈哈
效果图
三角函数还有很多用途,可以用在动画效果上,后面学习中...。
以上知识比较基础,大神请轻拍!
猜你喜欢
- 2025-01-05 如何实现使用鼠标绘制直线?
- 2025-01-05 leaferjs,全新的 Canvas 渲染引擎
- 2025-01-05 「从头到脚」WebRTC + Canvas 实现一个双人协作的共享画板
- 2025-01-05 一文解读前端实现电子签名
- 2025-01-05 Javascript图形(一):阿基米德螺线
- 2025-01-05 有趣的分形(二):六边形雪花
- 2025-01-05 HTML5学习笔记-绘制变形图形之组合效果
- 2025-01-05 游戏开发之旅-JavaScript绘制图形
- 2025-01-05 用三角函数sin和cos画模拟雷达示意图的html代码解析
- 2025-01-05 如何用2 KB代码实现3D赛车游戏?2kPlus Jam大赛了解一下
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)