1.国际惯例,先上效果图

一下效果图使用三次贝塞尔曲线进行连线,代码中有直接使用直线连线的代码,可直使用。

2.查看演示请看 这里

3 代码

    html:

<canvas id="canvas" width="1920" height="1080"></canvas>

 js: 这代码看起来可以说十分直白了,注释不放过任何一个角落。

var canvas = document.getElementById('canvas');
var width = document.documentElement.clientWidth;
var height = document.documentElement.clientHeight;
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext('2d');
var PI = Math.PI;
// 点的数量
var point_count = 100;
// 存放点的数组
var point_list = new Array(point_count);
// 最大点间距
var max_space = 50;
// 每次更新位置最大的行进距离
var max_speed = 1;
// 点的半径
var point_r = 3;
// 线宽
var lineWidth = 1;
var strokeStyle = '#2779D7';
var fillStyle = '#2779D7'; for (var i = 0; i < point_count; i++) {
point_list[i] = {
// x 轴位置
x: Math.round(Math.random() * (width - point_r * 2)),
// y 轴位置
y: Math.round(Math.random() * (height - point_r * 2)),
// x 轴速度
speedX: Math.random() * max_speed * 2 - max_speed,
// y 轴速度
speedY: Math.random() * max_speed * 2 - max_speed,
}
} function update() {
point_list.forEach(function (value) {
// 更新位置信息
value.x += value.speedX;
value.y += value.speedY;
// 超出屏幕后 在屏幕另一侧对应位置出现
// if (value.x > width + max_space) value.x = -max_space;
// if (value.x < -max_space) value.x = width + max_space;
// if (value.y > height + max_space) value.y = -max_space;
// if (value.y < -max_space) value.y = height + max_space;
// 碰壁反弹
if (value.x > width || value.x < 0) value.speedX = -value.speedX;
if (value.y > height || value.y < 0) value.speedY = -value.speedY;
})
} function draw() {
var arr = point_list;
ctx.clearRect(0, 0, width, height)
ctx.strokeStyle = strokeStyle;
ctx.fillStyle = fillStyle;
ctx.lineWidth = lineWidth;
for (var i = 0; i < arr.length; i++) {
ctx.beginPath()
ctx.globalAlpha = 1
ctx.arc(arr[i].x, arr[i].y, point_r, 0, PI * 2)
ctx.fill()
for (var j = i + 1; j < arr.length; j++) {
// 计算每两个点的距离, 三角形的斜边 的平方 = 两直角边平方和
var s = max_space - Math.sqrt((arr[j].x - arr[i].x) * (arr[j].x - arr[i].x) + (arr[j].y - arr[i].y) * (arr[j].y - arr[i].y));
// 计算的两点之间线的透明度,如果距离小于最大距离 透明度为 1 , 如果大于 最大距离小于 1.5倍最大距离,透明度线性衰减,大于1.5倍时透明度为0
var opc = (s >= 0 ? 1 : (s < - max_space / 2) ? 0 : 1 - s / - max_space * 2);
// 通过线透明度判断是否需要画线,如果透明度大于零,就划线。
if (opc > 0) {
ctx.beginPath();
ctx.globalAlpha = opc;
// 画直线
// ctx.moveTo(arr[i].x, arr[i].y);
// ctx.lineTo(arr[j].x, arr[j].y);
// 画贝塞尔曲线
ctx.moveTo(arr[i].x, arr[i].y);
ctx.bezierCurveTo(arr[i].x, arr[i].y + (arr[j].y - arr[i].y) * 0.5, arr[i].x + arr[j].x - arr[i].x, arr[i].y + (arr[j].y - arr[i].y) * 0.5, arr[j].x, arr[j].y);
ctx.stroke();
}
}
}
// 更新位置
update();
}
function loop() {
// 循环程序
draw();
setTimeout(loop, 1000/60)
}
window.onload = loop;

()

canvas - 简单的神经网络的更多相关文章

  1. tensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试

    刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第一个例子,就从神经网络开始. 神经网络没有卷积功能,只有简单的三层:输入层,隐藏层和输 ...

  2. tensorflow笔记(二)之构造一个简单的神经网络

    tensorflow笔记(二)之构造一个简单的神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7425200.html ...

  3. TensorFlow入门,基本介绍,基本概念,计算图,pip安装,helloworld示例,实现简单的神经网络

    TensorFlow入门,基本介绍,基本概念,计算图,pip安装,helloworld示例,实现简单的神经网络

  4. C++从零实现简单深度神经网络(基于OpenCV)

    代码地址如下:http://www.demodashi.com/demo/11138.html 一.准备工作 需要准备什么环境 需要安装有Visual Studio并且配置了OpenCV.能够使用Op ...

  5. 用pytorch1.0快速搭建简单的神经网络

    用pytorch1.0搭建简单的神经网络 import torch import torch.nn.functional as F # 包含激励函数 # 建立神经网络 # 先定义所有的层属性(__in ...

  6. 用pytorch1.0搭建简单的神经网络:进行多分类分析

    用pytorch1.0搭建简单的神经网络:进行多分类分析 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib ...

  7. 用pytorch1.0搭建简单的神经网络:进行回归分析

    搭建简单的神经网络:进行回归分析 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib.pyplot as p ...

  8. ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试

    http://www.cnblogs.com/denny402/p/5852983.html ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试   刚开始学习tf时,我们从 ...

  9. Python实现一个简单三层神经网络的搭建并测试

    python实现一个简单三层神经网络的搭建(有代码) 废话不多说了,直接步入正题,一个完整的神经网络一般由三层构成:输入层,隐藏层(可以有多层)和输出层.本文所构建的神经网络隐藏层只有一层.一个神经网 ...

随机推荐

  1. 【LG5019】[NOIP2018]道路铺设

    [LG5019][NOIP2018]道路铺设 题面 洛谷 题解 \(NOIP\) 抄 \(NOIP\)差评 设当前做到了位置\(i\) 且\(h_i\) \(-\) \(h_i\)\(_+\)\(_1 ...

  2. LVS入门篇(三)之LVS的工作模式和调度算法

    1.NAT模型 (1)原理图: ①.客户端(200.10.10.1)将请求发往前端的负载均衡器(114.100.80.10),请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP ...

  3. Nginx入门篇(三)之虚拟主机配置

    一.虚拟主机概念 所谓虚拟主机,在Web服务当中就是一个独立的网站站点,这个站点对应独立的域名(也有可能是IP或者端口),具有独立的程序和资源目录,可以独立地对外提供服务供用户访问. 这个独立的站点在 ...

  4. php编程知识点2018

    一 .PHP基础部分 1.PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配 ...

  5. 解决windows 服务中定时器timer 定时偶尔失效 问题

    最近做个windows 服务,功能是:定时执行一个任务:自动登录到一个网站后,点击相关网面上的按钮button. 在处理的过程中发现定时器老是不定时的失效,失效时间没有规律. 由于刚开始处于测试阶段, ...

  6. Eclipse用java.util.Scanner时出现Resource leak: 'in' is never closed

    Resource leak: 'in' is never closed : 直译为资源泄漏,‘in’一直没被关闭. 由于声明了数据输入扫描仪(Scanner in),从而获得了配置内存,但是结束时却没 ...

  7. PytorchZerotoAll学习笔记(三)--自动求导

    Pytorch给我们提供了自动求导的函数,不用再自己再推导计算梯度的公式了 虽然有了自动求导的函数,但是这里我想给大家浅析一下:深度学习中的一个很重要的反向传播 references:https:// ...

  8. DOM---文档对象模型(Document Object Model)的基本使用

    一.DOM简介 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口.它是一种与平台和语言无关的应用程序接口(API),它可以动态 ...

  9. Linux虚拟机centos系统安装

    linux 其他知识目录 安装完后如果虚拟机网络不通请参考:虚拟机网络不通故障解决 1.centos6.9安装 后面安装出了点问题,ip没有并且eth0网卡找不到,不过重新配置ifcfg-eth0后重 ...

  10. 用js两张图片合并成一张图片

    JS和canvas的合成方式 function drawAndShareImage(){ var canvas = document.createElement("canvas") ...