整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

用三角函数sin和cos画模拟雷达示意图的html代码解析

.说明:

1.1 推荐指数:★★★★

1.2 环境:谷歌浏览器、微软vscode编辑器

1.3 熟悉sin和cos的函数与圆(画圆弧的关系)深入理解


比较真实的雷达界面扫描图

2.本次的模拟效果图:


3.css和js文件的引入:

3.1 同一个文件夹或者目录下引入:./xxx.js或者./xxx.css

3.2 大型的html文件或者一般在html文件的同一个目录下,建css文件夹和js文件夹,放入相应文件夹下,那么导入就是:css/xxx.css和js/xxxx.js

3.3 外部引入法:找到网址:比如:网址在代码注释里query-3.4.1.min.js,引入即可。

但是如果没有网络,那么html文件就不可用了,怎么办呢?有办法。

用浏览器打开,复制:网址在代码注释里jquery-3.4.1.min.js,打开。

全选复制(ctrl+a),在本地文件夹新建一个js文件:jquery-3.4.1.min.js,将复制的内容,黏贴进入,保存即可。向上面的js文件和css文件一样,作为本地js文件引入。

4.本次html文件代码:index.html

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Canvas带坐标雷达扫描特效</title>
<!--在线引入地址:https://code.jquery.com/jquery-3.4.1.min.js-->
<!--script-- src="./jquery.min.js"></!--script-->
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<!--将style作为单独css文件,引入,否认就是style和/style的标签内-->
<!--采用下面格式:link法-->
<link type="text/css" href="./style.css" rel="stylesheet" />
</head>
<body>

<canvas id="myCanvas"></canvas>
<div class="info">
  <!--显示文字段落-->
  <h1>Warning!!Enemy is coming!!</h1>
  <!--初始化cs-xo,之后就是message弹出动态数据-->
  <p class="message">cs-xo</p>
</div>
<!--将radar.js作为单独js文件,引入,否认就是script和/script的标签内-->
<script src="./radar.js"></script>
</body>
</html>

注意:外部引入和本地引入基本没什么区别,如果css和js=JavaScript写在html内,可能有不同,上面注释里有提到。

5.jquery-3.4.1.min.js代码不写了,可以自己去下载,免费的,或者上面的有讲解如何操作,此处略。

6.新建一个radar.js文件,代码如下:

var c = $("#myCanvas")[0];
var ctx = c.getContext("2d");
/*雷达界面颜色=草地绿色*/
var color_gold="124,252,0"
var ww,wh;
var center={x: 0,y: 0};
// 定义函数
function getWindowSize(){
  ww=$(window).outerWidth();
  wh=$(window).outerHeight();
  c.width=ww;
  c.height=wh;
  // 中心坐标是窗口的一半
  center={x: ww/2,y: wh/2};
  ctx.restore();
  ctx.translate(center.x,center.y);
}
// 启动函数
getWindowSize();
$(window).resize(getWindowSize);
// 10=敌机数量,随机出现
var enemies=Array(10).fill({}).map(
  function(obj){
    return {
      r: Math.random()*200,
      deg: Math.random()*360,
      opacity: 0
    } 
  }
);
setInterval(draw,10);
var time=0;
var deg_to_pi=Math.PI/180;
// 画圆的函数,三角函数sin和cos画圆法
function Point(r,deg){
  return {
    x: r*Math.cos(deg_to_pi*deg),
    y: r*Math.sin(deg_to_pi*deg),
  };
}
/*定义颜色函数*/
function Color(op){
  return "rgba("+color_gold+","+op+")";
}
function draw(){
  time+=1;
  /*画长方形的背景颜色填充 "#111"=黑色;*/
  ctx.fillStyle = "#111";
  ctx.beginPath();
  /*画长方形*/
  ctx.rect(-2000,-2000,4000,4000);
  ctx.fill();
  /*十字垂直水平坐标线,0.1~1代表粗细*/ 
  ctx.strokeStyle="rgba(255,125,64,0.5)";
  // ctx.strokeStyle="255,125,64";// 默认粗细值为1
  ctx.moveTo(-ww/2,0);
  ctx.lineTo(ww/2,0);
  ctx.moveTo(0,-wh/2);
  ctx.lineTo(0,wh/2);
  ctx.stroke();
  // 雷达扫面绿色和半径大小
  ctx.strokeStyle=Color(1);
  var r=300;
  var deg=time;
  var newpoint=Point(r,deg);
  var line_deg = (time/2) % 360;
  // 雷达动态转动的扫描扇形的弧度为100,最大360
  var line_deg_len=100;
  for(var i=0;i<line_deg_len;i++){
    var deg1 = (line_deg-i-1) ;
    var deg2 = (line_deg-i) ;
    var point1=Point(r,deg1);
    var point2=Point(r,deg2);
    // 代表随着雷达扫描扇形的移动,颜色逐渐变淡
    var opacity=1-(i/line_deg_len)-0.3;
    if (i==0) opacity=1;
    ctx.beginPath();
    // 雷达扇形绿色动态渐变淡色
    ctx.fillStyle=Color(opacity);
    ctx.moveTo(0,0);
    ctx.lineTo(point1.x,point1.y);
    ctx.lineTo(point2.x,point2.y);
    ctx.fill();
  }
  enemies.forEach(function(obj){
    // 敌机出现的原点
    ctx.fillStyle=Color(obj.opacity);
    var obj_point=Point(obj.r,obj.deg);
    ctx.beginPath();
    ctx.arc(
      obj_point.x,obj_point.y,
      // 绿色敌机出现的小圆点4是半径
      4,0,2*Math.PI
    );
    ctx.fill();
    ctx.strokeStyle= Color(obj.opacity);
    /*如果这样直接设置,ctx.strokeStyle= '#FF4500,那么敌机就是一直出现在屏幕';*/
    var x_size=6;
    /* 雷达显示敌机目标大小设置*/
    ctx.lineWidth=4;
    ctx.beginPath();
    ctx.moveTo(obj_point.x-x_size,obj_point.y+x_size);
    ctx.lineTo(obj_point.x+x_size,obj_point.y-x_size);
    ctx.moveTo(obj_point.x+x_size,obj_point.y+x_size);
    ctx.lineTo(obj_point.x-x_size,obj_point.y-x_size);
    ctx.stroke();
    if (Math.abs(obj.deg - line_deg)<=1){
      obj.opacity=1;
      // 显示左上角侦查到的地理坐标
      $(".message").text("Detected: "+ obj.r.toFixed(3) + " at " +obj.deg.toFixed(3));
    }
    obj.opacity*=0.99;
    // 显示敌机出现的涟漪圈的颜色
    ctx.strokeStyle= Color(obj.opacity);
    /*目标敌机显示后的圆圈涟漪粗细设置*/
    ctx.lineWidth=1;
    ctx.beginPath();
    ctx.arc(
      obj_point.x,obj_point.y,
      10*(1/(obj.opacity+0.0001)),0,2*Math.PI
    );
    ctx.stroke();
  });
  // 雷达虚点固定圆盘的颜色,半径等设置
  ctx.strokeStyle='yellow';
  var split =120;
  var feature =15;   // 15个小格
  var start_r=230; // 半径
  var len = 5;
  for(var i=0;i<split;i++){
    ctx.beginPath();
    var deg = (i/120) * 360;
    if (i%feature==0){
      len=10;
      ctx.lineWidth=5;
    }else{
      len=5; 
      ctx.lineWidth=1;
    }
    var point1 =Point(start_r,deg);
    var point2 =Point(start_r+len,deg);
    ctx.moveTo(point1.x,point1.y);
    ctx.lineTo(point2.x,point2.y);
    ctx.stroke();
  }
  /*画圈函数定义,下面三个画圆函数的定义*/
  function CondCircle(r,lineWidth,func_cond){
    ctx.lineWidth=lineWidth;
    /* 颜色定义*/
    /*注意颜色定义:有引号的和没有引号的区别,就是前面有没有颜色图标*/
    ctx.strokeStyle='#00C78C';
    ctx.beginPath();
    for(var i=0;i<=360;i++){
      var point =Point(r,i);
      if (func_cond(i)){
        ctx.lineTo(point.x,point.y);
      }else{
        ctx.moveTo(point.x,point.y);
      }
    }
    ctx.stroke();
  }
  // 雷达外围的移动半弧形,300为半径,2代表粗细
  CondCircle(300,2,function(deg){
    return ((deg+time/10)%180)<90;
  });
  // 雷达中间绿色的移动半弧形,160为半径,2代表粗细
  CondCircle(160,2,function(deg){
    return ((deg+time/5)%180)<90;
  });
  // 雷达内的小圆圈,绿色虚线圈,1代表粗细
  CondCircle(100,1,function(deg){
    // 如果这里没有,那么颜色就是三条线函数里统一的颜色,也可以单独设立
    ctx.strokeStyle='pink';
    return (deg%3)<1;
  });
  
}

7.新建一个style.css文件,代码如下:

html, body {
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
  /*隐藏浏览器的条形伸缩*/
  overflow: hidden;
}
/*定义画布*/
canvas {
  -webkit-transform: scaleY(-1);
          transform: scaleY(-1);
}
/*显示警告信息位置设置*/
.info {
  position: absolute;
  left: 10px;
  top: 10px;
}
h1 {
  /*显示警告信息文字颜色设置*/
  color:red;
  letter-spacing: 0.5px;
  margin: 0;
  font-size:smaller;
}
.message {
  /*显示雷达预警敌机的动态位置的文字颜色设置*/
  margin: 0;
  color:#00FFFF;
  font-size: x-large;
}

8.通过简单的例子,熟悉html、css和js的关系和布局等基本知识,熟练掌握基本操作。

久没参与魔方的发布工作了,今天提笔,有种莫名的生疏和惶恐,从下午四点半一直坐到现在,3个小时,删删写写。千言无语,千头万绪,千百般滋味涌上心头,真的很怀念那些年每个周五定期一更的日子,简单而快乐。

2006年12月Vista优化大师发布第一个测试版,再到2009年9月发布魔方0.1,时光荏苒,便过去了9年。很多当初最早的那批朋友,现在都成了老友,有时候一觉醒来,发现软媒的那个最老用户群里的消息闪烁,由衷的开心,没有什么比熟悉的感觉更有韵味。

产品部的魔方一哥过来催文了,尽管他说理解我的心情啊什么的,但是为了保持一贯的不加班作风,我得直入主题了——

魔方6.16正式版现在发布,“忍不住”还是让产品组加了新功能,本来说好的要克制加新功能的冲动,重点大幅改进清理等原有常用功能的。

这次忍不住要加的新功能,大家在标题里面已经看到了,就是一键提取微软官方的精美聚焦壁纸(美化大师顶部加入了“聚焦壁纸”)。熟悉微软的朋友都知道,Win10TH2开始系统增加了“Windows 聚焦”壁纸,大家在系统设置的“个性化”-“锁屏设置”里面可以设置锁屏的背景壁纸为“Windows 聚焦”,如下图所示:

这些微软官方提供的锁屏壁纸还是非常精美的,会自动的下载并切换,于是魔方便加入了提取功能,需要注意的是,这儿的提取,是提取的本机已经下载的,如果您之前没有开启过Windows聚焦功能,是抓不到的。这个抓取功能更方便的是让大家随时保存最新的。那过去的好看聚焦壁纸怎么办?别着急,我们在软件界面提供了所有Win10历史聚焦壁纸下载大全的链接,很贴心的说。

当然,这次魔方还有其他的有爱更新,例如清理大师的重复文件查找支持了批量选择和删除操作,例如设置大师中加入了让资源管理器关闭mkv文件的预览以防止卡顿,软媒雷达、软媒时间、WiFi助手、软媒压缩等都有界面和功能修复改进。

具体更新内容的细节,请看下面的更新历史吧!

PS:按照惯例,软媒魔方将在发布数十分钟后才放开自动升级。

一、软媒魔方更新历史

软媒魔方 6.1.6.0 正式版 - 2015年12月17日

魔方主程序 6.1.6.0:

新增:应用大全 - 增加旗鱼浏览器PC版入口

软媒美化大师 3.6.9.0:

新增:针对Win10 TH2增加Windows聚焦壁纸一键提取功能

软媒时间 3.1.3.0:

修正:界面 - 多云和阴天的小图标弄反的问题修正:界面 - 系统开启高DPI的时候,窗口太小的问题

软媒清理大师 3.7.3.0:

新增:隐私清理 - Office 2016打开历史记录清理

改进:重复文件查找 - 支持批量操作改进:注册表清理 - 屏蔽注册表清理功能

修正:隐私清理 - Office 2013打开历史记录清理不掉的问题

软媒设置大师 3.6.8.0:

新增:资源管理器 - 关闭MKV视频预览

软媒雷达 6.0.7.0:

修正:本机信息 - 读取IE的Flash Player版本号错误的问题修正:界面 - 系统开启高DPI的时候,窗口太小的问题

软媒IE管理大师 1.9.8.0:

修正:界面 - 系统开启高DPI的时候,窗口太小的问题

软媒WiFi助手 1.1.8.0:

修正:稳定性 - 启动WiFi助手时可能发生的崩溃问题

软媒压缩 1.1.5.0:

修正:界面 - 系统开启高DPI的时候,窗口太小的问题

二、为什么大家都在用魔方?

软媒魔方好不好?软媒魔方有什么用?为什么要用软媒魔方?

先列出一些基本组件功能:

1、清理大师:一键清理、深度清理、注册表清理、字体清理,还有隐私清理。。。难道你不需要?

2、美化大师:改系统字体、DIY win7开始按钮、设置开机动画、破解系统主题、修改系统声音。。。怎么个性怎么玩,美化大师全搞定!

3、优化大师:一键加速、添加、删除系统启动项,让你轻松掌控系统进程的开启!

4、软媒时间,软媒全球首创独创的创意,任务栏时间区加入农历、天气等显示,不占任何额外空间,超NB!

5、软媒桌面:哈,Windows系统里多了类似苹果Mac OS X的快捷栏,方便大发了。

6、软件管家:精选装机必备软件大全,下载杠杠的……

7、系统雷达:任务栏窗口+桌面悬浮窗自由随意选择,实时监控网络流量、CPU、内存占用、磁盘读写,简单、清晰、方便!

8、U盘启动:一键制作U盘系统安装盘,装机还是PE维护简直轻松到极点!

9、硬盘装机:仅需两步,轻松帮你重装系统,win7、win8、win10,想装什么装什么,你肯定需要!

10、WiFi共享助手:超级简单,打开软件,一键开启热点,立马摆脱手机流量不够用的困扰!!亲,你的流量还够用吗?

还有啥?上面列出的连一半功能都不到,还有网速测试、磁盘大师、文件校验、文件解锁、文件分割合并、文件粉碎……等等,还有好多功能,你能想到的基本都有!

软媒魔方现在已经有4000万用户下载使用,好用没得说!

三、软媒魔方软件截图

只需一键,智能模式让你可以放心的把软媒魔方介绍给你的老婆、小姨子和表妹……

右上角轻松切换到专业模式,熟悉中包含着科学改进后的经典布局

软媒时间,风云变幻-不占用任何额外空间,万年历天气闹钟记事本在任务栏时间区完美呈现;

软媒桌面,好玩好看-喜欢的鼠标拖进来,不爱的鼠标拖出去,桌面干净整洁灵动惊艳;

软媒雷达,实时侦探-把握您爱机的每一跳脉动,精确掌控系统软硬件的占用资源;

软件管家,纯净精干-编辑精选装机必备的500款最常用软件,一键安装绝无插件;

四、软媒魔方下载信息

初级用户解惑:安装包和绿色版有什么不同?安装版下载后直接双击运行即可进入向导安装,方便快捷。绿色版是ZIP压缩格式,直接解压到你指定的文件夹路径下。

软媒 - 存在,创造价值。

微信搜索“IT之家”关注抢6s大礼!下载IT之家客户端(戳这里)也可参与评论抽楼层大奖!

达图是什么呢?雷达图又被称为蜘蛛网图,能够显示出多个维度的数据。以中心一点向各个数据方向外发射轴线,且每个数据点的夹角相等、刻度相同,连接每个变量的数据点后就会形成一条多边形。
雷达图适用于查看参数变量在某一范围内的变化,适用于显示各性能之间的差异。
但雷达图不能包含太多变量,产生的填充区域会变得混乱难以辩认。而且虽然仍有网格线标注大概数值但因为不够精准,因此如果追求精准数值,则不建议使用雷达图。

雷达图常见用途

1、市场分析。如调查一个产品的受众程度,可以以雷达图的形势呈现。能比较明晰产品上各要素的变化。
2、调查报告。对于调查一个热门话题,从该话题的不同回答整合成一个大致范围,即可绘成雷达图。
3、因素分析。如分析一个人各方面的能力,空间力,想象力,记忆力,逻辑力等等。

雷达图绘制方法

雷达图的制作方法十分简单,通过以下几个步骤就可以轻松绘制出一幅专业实用的雷达图。


第一步:点击下载“亿图图示"软件或访问在线版亿图图示。启动软件,开始作图!
第二步:新建雷达图。依次点击搜索“雷达图”。然后从例子库中,选择一个模板,点击打开雷达图模板。

第三步:点击画布中的雷达图,再点击右侧属性面板中的“图表”,最后点击“数据”,通过修改表格中的数据,即可改变画布中雷达图的数据。当然,也可以直接导入excel或csv数据文件,可一键生成雷达图。

第四步:双击文本框,替换雷达图模板里的文字。

第五步:完成雷达图的绘制后,可以点击右上角的保存、下载、打印、分享等按钮,对绘制好的雷达图作品进行存储。也可以将作品导出为图片、PDF、PPT等格式。

雷达图绘制软件---亿图图示

亿图图示是一款专业的绘制图形图表的国产软件,能够给更多使用它的人尤其是商业人士带来更有想法更有创造力的图表,还能够更多地节省时间增加输出。它有丰富的模板和例子,能够绘制诸如雷达图、流程图、组织结构图、商务图表等260余种图表。支持Windows、Mac以及Linux系统的安装使用,也支持网页在线使用。
使用亿图图示绘制雷达图,可以直接使用模板来提升使用者的学习或办公效率。

为什么选择亿图图示绘制雷达图?

1、多平台支持
亿图图示支持Windows、Mac和Linux系统也包含国产操作系统,V10.1 版本支持桌面版与网页版云同步存储,文件还可以一键查看、分享。
2、支持多种格式导入
既可一键将导入Visio,SVG格式,也可以批量转化Visio到Edraw文件,一键将您的图表导出到各种格式,如图片,Html,PDF,SVG,Office等,让您的图表格式更能满足要求。
3、支持多种格式导出
一键即可将图表转化为Word、Excel、PowerPoint、PDF、SVG、PNG等格式,不为转换格式担忧。
4、操作简单易上手
即使毫无绘图基础,但只要拖拽图形就能添加到画布,双击图层就可以编辑文字,还可以一键配色、更改形状图样。非常简便快捷,方便绘图制作。
5、功能多样,模板丰富
亿图图示拥有超过26000种图形模板和矢量符号,还有“超链接”“附件”“符号”等技术支持不怕图表不丰富。可以随心使用,绘制出更满意的图表。
6、图文混排,观赏性强
功能多样也就意味着图表比起较单一的图表更具观赏性,图文混排能够很好地发挥文字和图表的功能,方便观赏者理解明白。