JavaScript

语言:

JaveScriptBabelCoffeeScript

确定

function g(e) {

return document.getElementById(e);

}

/* 一个插值算法 */

function Cubic(t, b, c, d) {

return c * (t /= d) * t * t + b;

}

var ctx = g('pad').getContext('2d');

ctx.scale(100, 100);

ctx.translate(3, 3);

var theta = 4.2; //转角

var eleva = 0.6; //仰角

/* 投影算法 */

function iso(x, y, z) {

var dist = Math.sqrt(x * x + y * y);

var angle = (x == 0 && y == 0) ? 0 : Math.atan(y / x) + theta + ((x < 0) ? Math.PI : 0);

x = Math.cos(angle) * dist;

y = -Math.sin(angle) * dist;

var fact = (y * Math.cos(eleva) + z * Math.sin(eleva) + 8) / 8;

y = y * Math.sin(eleva) - z * Math.cos(eleva);

x *= fact;

y *= fact;

return {

x: x,

y: y

};

}

/* 球方程 x^2+y^2+z^2=r^2 */

function sphere(r) {

var x, y, z;

var t;

z = -r;

while (z < r) {

x = -Math.sqrt(r * r - z * z);

y = 0;

t = 1;

co = iso(x, y, z);

ctx.moveTo(co.x, co.y);

while (true) {

y = Math.sqrt((r * r - x * x - z * z)) * t;

if (isNaN(y)) { /* 此时,x值为极值,y的绝对值已经不能再小 */

if (t == 1) {

t = -t;

x = Math.sqrt(r * r - z * z);

continue;

} /* x值达到最大 */

else break;

};

co = iso(x, y, z);

ctx.lineTo(co.x, co.y);

x += 0.1 * t;

}

ctx.closePath();

z = Cubic(1, z, 2 * r, 4); //应用插值算法(分布均匀些)

}

}

function preview() {

ctx.clearRect(-3, -3, 10, 10);

ctx.lineWidth = 0.001;

ctx.lineJoin = "round";

ctx.strokeStyle = 'rgba(0,0,100,0.8)';

var co;

ctx.beginPath();

sphere(2);

ctx.stroke();

}

preview();

/* 鼠标控制 */

g('pad').onmousedown = function(e) {

var x0 = e.clientX,

y0 = e.clientY;

document.onmousemove = function(e) {

theta -= (x0 - (x0 = e.clientX)) / 100;

eleva -= (y0 - (y0 = e.clientY)) / 100;

theta %= Math.PI * 2;

if (theta < 0) theta += Math.PI * 2;

eleva %= Math.PI * 2;

if (eleva < 0) eleva += Math.PI * 2;

preview();

}

document.onmouseup = function(e) {

document.onmousemove = null;

}

};

h5球的立体效果_使用HTML5 Canvas 2D直角坐标系实现三维球体效果相关推荐

  1. html5游戏开发马赛克对比,基于HTML5 Canvas的纯JS图片马赛克效果插件

    这是一款基于HTML5 canvas的图片马赛克js插件.该图片马赛克插件使用简单,可调整马赛克的大小,透明度等属性,适合用于制作一些特殊的图片效果. 基于HTML5 Canvas的纯JS图片马赛克效 ...

  2. html5粒子形成图案,html5 canvas粒子形成下雪背景的效果

    本篇文章给大家带来的内容是关于html5 canvas粒子形成下雪背景的效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. canvas粒子形成下雪背景 body{ margin: ...

  3. 使用html制作圆弧正方形,JavaScript+html5 canvas制作的圆中圆效果实例

    本文实例讲述了JavaScript+html5 canvas制作的圆中圆效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: demo #canvas { background: ...

  4. 赠书:HTML5 Canvas 2d 编程必读的两本经典

    赠书:HTML5 Canvas 2d 编程必读的两本经典 这两年多一直在和HTML5 Canvas 打交道,也带领团队开发了世界首款基于HTML5 Canvas 的演示文档工具---AxeSlide( ...

  5. html5 lob,GitHub - LobbL/cax: HTML5 Canvas 2D Rendering Engine - 小程序、小游戏以及 Web 通用 Canvas 渲染引擎...

    English | 简体中文 Cax HTML5 Canvas 2D Rendering Engine Features Simple API, Lightweight and High perfor ...

  6. html5 2d小游戏,GitHub - pepsin/cax: HTML5 Canvas 2D Rendering Engine - 小程序、小游戏以及 Web 通用 Canvas 渲染引擎...

    English | 简体中文 Cax HTML5 Canvas 2D Rendering Engine Features Simple API, Lightweight and High perfor ...

  7. h5球的立体效果_CSS3实现球体旋转

    本帖最后由 欧水萍 于 2016-11-11 15:11 编辑 CSS3实现球体旋转 本教程简述如何用CSS3实现旋转的球体 效果如下图所示,球体沿着中间的轴旋转: 要理解的知识点 1 三维空间的透视 ...

  8. h5的横线_使用HTML5 Canvas绘制直线或折线等线条的方法讲解

    HTML5 Canvas基本概念讲解html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏 ...

  9. android 弹出弹框2秒消失_基于HTML5 Canvas 实现弹出框

    前言 用户鼠标移入时,有弹出框出现,这样的需求很常见.这在处理 HTML 元素实现时简单,但是如果是对 HTML5 Canvas 构成的图形进行处理,这种方法不再适用,因为 Canvas 使用的是另外 ...

最新文章

  1. php sql alert,SQL ALTER
  2. 后台返回的数据换行显示
  3. 05 Diagnostics 诊断
  4. 找不到在标准的system字段里新增entry的办法
  5. python输出生日程序_Python中:利用七段数码管输出自己的生日及系统当前时间
  6. 理解BERT Transformer:Attention is not all you need!
  7. python是什么软件-零基础入门Python怎么学习?老男孩python用什么软件
  8. egg mysql insert_egg-mysql
  9. 易鲸捷数据库(EsgynDB)常用SQL
  10. 3dmax如何导入ies灯
  11. 群晖Docker部署Calibre Web打造全功能书库
  12. electron深入浅出
  13. 使用 Kotlin 中的 takeIf
  14. 【matlab】解方程组
  15. vivo全球商城架构演进之路
  16. word 模板的位置
  17. 微视linux scsi驱动超时错误处理
  18. 适合穷人挣钱最快的方法
  19. 那些精贵的文献资源下载网址经验总结(转载)
  20. 使用Socket进行设备间点对点连接传输数据

热门文章

  1. 和信虚拟终端的全面部署-虚拟终端网络工程实施
  2. 1370. 上升下降字符串
  3. 类型转换static_cast,dynamic_cast,const_cast,reinterpret_cast等
  4. opencv3和qt5计算机视觉应用开发pdf_NeurIPS 2019:计算机视觉论文回顾
  5. 基于asp. net sql快餐外卖设计网站成品
  6. 计算机控制技术在医学的应用,华北工控:嵌入式计算机在医疗CT机中的应用
  7. linux安装步骤_图解 Debian 10(Buster)安装步骤 | Linux 中国
  8. ArrayList 与 LinkedList 插入、查询效率测试
  9. c java python go 哪种编程语言接近编程的本质_一图看懂编程语言迁移模式:终点站是Python、Go、JS...
  10. 怎样用python把数据分开_python使用pandas实现数据分割实例代码