h5球的立体效果_使用HTML5 Canvas 2D直角坐标系实现三维球体效果
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直角坐标系实现三维球体效果相关推荐
- html5游戏开发马赛克对比,基于HTML5 Canvas的纯JS图片马赛克效果插件
这是一款基于HTML5 canvas的图片马赛克js插件.该图片马赛克插件使用简单,可调整马赛克的大小,透明度等属性,适合用于制作一些特殊的图片效果. 基于HTML5 Canvas的纯JS图片马赛克效 ...
- html5粒子形成图案,html5 canvas粒子形成下雪背景的效果
本篇文章给大家带来的内容是关于html5 canvas粒子形成下雪背景的效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. canvas粒子形成下雪背景 body{ margin: ...
- 使用html制作圆弧正方形,JavaScript+html5 canvas制作的圆中圆效果实例
本文实例讲述了JavaScript+html5 canvas制作的圆中圆效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: demo #canvas { background: ...
- 赠书:HTML5 Canvas 2d 编程必读的两本经典
赠书:HTML5 Canvas 2d 编程必读的两本经典 这两年多一直在和HTML5 Canvas 打交道,也带领团队开发了世界首款基于HTML5 Canvas 的演示文档工具---AxeSlide( ...
- 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 ...
- 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 ...
- h5球的立体效果_CSS3实现球体旋转
本帖最后由 欧水萍 于 2016-11-11 15:11 编辑 CSS3实现球体旋转 本教程简述如何用CSS3实现旋转的球体 效果如下图所示,球体沿着中间的轴旋转: 要理解的知识点 1 三维空间的透视 ...
- h5的横线_使用HTML5 Canvas绘制直线或折线等线条的方法讲解
HTML5 Canvas基本概念讲解html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏 ...
- android 弹出弹框2秒消失_基于HTML5 Canvas 实现弹出框
前言 用户鼠标移入时,有弹出框出现,这样的需求很常见.这在处理 HTML 元素实现时简单,但是如果是对 HTML5 Canvas 构成的图形进行处理,这种方法不再适用,因为 Canvas 使用的是另外 ...
最新文章
- php sql alert,SQL ALTER
- 后台返回的数据换行显示
- 05 Diagnostics 诊断
- 找不到在标准的system字段里新增entry的办法
- python输出生日程序_Python中:利用七段数码管输出自己的生日及系统当前时间
- 理解BERT Transformer:Attention is not all you need!
- python是什么软件-零基础入门Python怎么学习?老男孩python用什么软件
- egg mysql insert_egg-mysql
- 易鲸捷数据库(EsgynDB)常用SQL
- 3dmax如何导入ies灯
- 群晖Docker部署Calibre Web打造全功能书库
- electron深入浅出
- 使用 Kotlin 中的 takeIf
- 【matlab】解方程组
- vivo全球商城架构演进之路
- word 模板的位置
- 微视linux scsi驱动超时错误处理
- 适合穷人挣钱最快的方法
- 那些精贵的文献资源下载网址经验总结(转载)
- 使用Socket进行设备间点对点连接传输数据
热门文章
- 和信虚拟终端的全面部署-虚拟终端网络工程实施
- 1370. 上升下降字符串
- 类型转换static_cast,dynamic_cast,const_cast,reinterpret_cast等
- opencv3和qt5计算机视觉应用开发pdf_NeurIPS 2019:计算机视觉论文回顾
- 基于asp. net sql快餐外卖设计网站成品
- 计算机控制技术在医学的应用,华北工控:嵌入式计算机在医疗CT机中的应用
- linux安装步骤_图解 Debian 10(Buster)安装步骤 | Linux 中国
- ArrayList 与 LinkedList 插入、查询效率测试
- c java python go 哪种编程语言接近编程的本质_一图看懂编程语言迁移模式:终点站是Python、Go、JS...
- 怎样用python把数据分开_python使用pandas实现数据分割实例代码