canvas通过三角函数中获得圆上某点的坐标

简介: 在我们通过canvs画图的时候经常会用到圆,且需要计算出圆上某点的坐标,由于我数学没学好,总是记不得怎么获取,这里记录下,加深记忆

在我们通过canvs画图的时候经常会用到圆,且需要计算出圆上某点的坐标,由于我数学没学好,总是记不得怎么获取,这里记录下,加深记忆。

这里面用到了我们以前学过的三角函数,可以通过三角函数来计算圆上的位置。

如下:在直角坐标系中圆点O(0,0) ,半径为OP,求圆上点P的坐标x,y.

image.png

我们可以通过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>

噔噔噔噔,效果出来啦..虽然很简单,但是初学的时候总是有莫名的成就感.. 哈哈

image.png

三角函数还有很多用途,可以用在动画效果上,后面学习中...。


以上知识比较基础,大神请轻拍!

相关文章
|
9月前
两个坐标间画线
两个坐标间画线
39 3
|
前端开发 关系型数据库 容器
利用Canvas进行绘制XY坐标系
原文:利用Canvas进行绘制XY坐标系 首先来一发图 绘制XY的坐标主要是利用Canvas setLeft和setBottom功能(Canvas内置坐标的功能) 1.首先WPF中的坐标系都是从左到右,从上到下的 即左上角位置(0,0)点,所以XY的Canvas要以(RenderTransf...
1755 0
|
7月前
|
前端开发 JavaScript
canvas系列教程01——直线、三角形、多边形、矩形、调色板
canvas系列教程01——直线、三角形、多边形、矩形、调色板
188 0
|
8月前
|
前端开发
canvas图形操作(缩放、旋转、位移)
canvas图形操作(缩放、旋转、位移)
|
9月前
|
Python
绘制圆
【5月更文挑战第9天】绘制圆。
51 2
数学问题-圆上某点沿圆心旋转后的坐标关系式
数学问题-圆上某点沿圆心旋转后的坐标关系式
285 1
|
前端开发
用canvas实现同心圆带坐标的雷达图
1.在项目中我们经常使用echarts来实现图表功能,但是最近项目中遇到一个同心圆加坐标的图表,大家都知道echarts中雷达图不能设置坐标轴,所以采用了canvas来绘画
146 0
|
前端开发
canvas绘制五角星
canvas绘制五角星
196 0
|
前端开发 JavaScript 数据可视化
用Canvas实现简单画图(线、三角形、矩形、圆)
👋因为在B站看到一个小demo是基于canvas写的,非常喜欢,然后上掘金大数据又给我推了 《Canvas 从入门到劝朋友放弃(图解版)》,就像上手一下canvas,本来不想写笔记的,因为《Canvas 从入门到劝朋友放弃(图解版)》自己看了一下挺全的,但本着输入要有输出,所以就有了这篇文章
254 0