使用js画图之圆、弧、扇形
网络编程 2021-07-04 21:47www.168986.cn编程入门
这篇文章主要介绍了使用js绘制几何图形教程,本文主要是教大家绘制圆、弧、扇形,需要的朋友可以参考下
半径为r的圆上的点p(x,y)与圆心O(x0,y0)的关系: x = x0+rcosA; y = y0+rsinA ,A为弧度
样例
一、圆
代码如下:
//圆形/椭圆
//dot 圆点
//r 半径
//pressionRatio 垂直压缩比
function drawCircle(dot, r, pressionRatio, data){
var pstart = [dot[0]+r, dot[1]]; //起点
var pre = pstart;
for(var i=0; i < 360; i+=5){
rad = iMath.PI/180; //计算弧度
//rMath.cos(rad) 弧线的终点相对dot的水平偏移
//rMath.sin(rad) 弧线的终点相对dot的垂直偏移
//pressionRatio 垂直压缩比例
var cur = [rMath.cos(rad)+dot[0], pressionRatiorMath.sin(rad)+dot[1]];
drawLine(pre,cur);
pre = cur; //保存当前点的坐标
}
drawLine(pre,pstart);//使闭合
//描圆点
drawPoint({
pw:2,ph:2,color:'DarkRed',point:dot
});
}
二、弧
就在画出圆的一部分,算法与圆相似
代码如下:
//画弧
//dot 圆点
//r 半径
//angle 圆心角
//angleOfSlope 与x轴的夹角
//pop 是否弹出
//title 标签
function drawArc(dot, r, angle, angleOfSlope, pop, title){
var newDot = [dot[0], dot[1]];
var a = (angleOfSlope+angle/2)Math.PI/180;
if(pop){ //计算圆心的新坐标
newDot[0] = dot[0]+10Math.cos(a);
newDot[1] = dot[1]+10Math.sin(a);
}
if(!angleOfSlope){
angleOfSlope = 0;
}
var aos = angleOfSlopeMath.PI/180;
var aos2 = (angleOfSlope+angle)Math.PI/180;
var pstart = [newDot[0]+rMath.cos(aos), newDot[1]+rMath.sin(aos)]; //弧线的起点
var pend = [newDot[0]+rMath.cos(aos2), newDot[1]+rMath.sin(aos2)]; //弧线的终点
var pre = pstart;
for(var i=0; i < angle; i+=2){ //在angle范围内画弧
rad = (i+angleOfSlope)Math.PI/180;
var cur = [rMath.cos(rad)+newDot[0], rMath.sin(rad)+newDot[1]];
drawLine(pre,cur);
pre = cur;
}
}
三、扇形
将弧的两端与圆心相连
代码如下:
//扇形
//dot 圆点
//r 半径
//angle 圆心角
//angleOfSlope 与x轴的夹角,确定扇形的方向
//pop 是否弹出,即是否偏离圆心
//title 标签
function drawSector(dot, r, angle, angleOfSlope, pop, title){
var newDot = [dot[0], dot[1]];
var a = (angleOfSlope+angle/2)Math.PI/180;
if(pop){ //计算圆心的新坐标
newDot[0] = dot[0]+10Math.cos(a);
newDot[1] = dot[1]+10Math.sin(a);
}
if(!angleOfSlope){
angleOfSlope = 0;
}
var aos = angleOfSlopeMath.PI/180;
var aos2 = (angleOfSlope+angle)Math.PI/180;
var pstart = [newDot[0]+rMath.cos(aos), newDot[1]+rMath.sin(aos)]; //弧线的起点
var pend = [newDot[0]+rMath.cos(aos2), newDot[1]+rMath.sin(aos2)]; //弧线的终点
drawLine(newDot,pstart); //连接圆心与起点
var pre = pstart;
for(var i=0; i < angle; i+=2){ //在angle范围内画弧
rad = (i+angleOfSlope)Math.PI/180;
var cur = [rMath.cos(rad)+newDot[0], rMath.sin(rad)+newDot[1]];
drawLine(pre,cur);
pre = cur;
}
drawPolyline([pre, pend, newDot]); //使闭合
//描圆心
drawPoint({
pw:2,ph:2,color:'DarkRed',point:dot
});
//标签
if(title){
document.write("<span style='height: 24px; line-height: 24px; width: 80px; text-align: center; color: RED; position: absolute; left:"+(newDot[0]+r(2/4)Math.cos(a)-40)+"px; : "+(newDot[1]+r(2/4)Math.sin(a)-12)+"'>"+title+"</span>");
}
}
是不是很震撼,原来js也能做如此炫酷的事情。。。
上一篇:使用js画图之正弦曲线
下一篇:js函数与php函数的区别实例浅析
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程