css

  1. .rotate{
  2. background:#aaa;
  3. padding:100px;
  4. position: relative;
  5. }
  6. .point {
  7. position: absolute;
  8. top: 215px;
  9. left: 270px;
  10. width: 149px;
  11. height: 200px;
  12. background: url(http://fundact.eastmoney.com/app4/images/luckyPoint.png) no-repeat;
  13. }
  14. .luckyBtn{
  15. position: absolute;
  16. top: 286px;
  17. left: 288px;
  18. cursor: pointer;
  19. width: 109px;
  20. height: 109px;
  21. background: url(http://fundact.eastmoney.com/app4/images/luckyBtn.png) no-repeat;
  22. }

html

  1. <div class="rotate">
  2. <img id="rotate" src="http://fundact.eastmoney.com/app4/images/luckyDish.png" />
  3. <span class="point"></span>
  4. <span id="luckyBtn" class="luckyBtn"></span>
  5. </div>

jquery.easing.min.js

  1. jQuery.easing.jswing=jQuery.easing.swing;
  2. jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,a,c,b,d){return jQuery.easing[jQuery.easing.def](e,a,c,b,d)},easeInQuad:function(e,a,c,b,d){return b*(a/=d)*a+c},easeOutQuad:function(e,a,c,b,d){return-b*(a/=d)*(a-2)+c},easeInOutQuad:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a+c;return-b/2*(--a*(a-2)-1)+c},easeInCubic:function(e,a,c,b,d){return b*(a/=d)*a*a+c},easeOutCubic:function(e,a,c,b,d){return b*((a=a/d-1)*a*a+1)+c},easeInOutCubic:function(e,a,c,b,d){if((a/=d/2)<1)return b/
  3. 2*a*a*a+c;return b/2*((a-=2)*a*a+2)+c},easeInQuart:function(e,a,c,b,d){return b*(a/=d)*a*a*a+c},easeOutQuart:function(e,a,c,b,d){return-b*((a=a/d-1)*a*a*a-1)+c},easeInOutQuart:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a*a*a+c;return-b/2*((a-=2)*a*a*a-2)+c},easeInQuint:function(e,a,c,b,d){return b*(a/=d)*a*a*a*a+c},easeOutQuint:function(e,a,c,b,d){return b*((a=a/d-1)*a*a*a*a+1)+c},easeInOutQuint:function(e,a,c,b,d){if((a/=d/2)<1)return b/2*a*a*a*a*a+c;return b/2*((a-=2)*a*a*a*a+2)+c},easeInSine:function(e,
  4. a,c,b,d){return-b*Math.cos(a/d*(Math.PI/2))+b+c},easeOutSine:function(e,a,c,b,d){return b*Math.sin(a/d*(Math.PI/2))+c},easeInOutSine:function(e,a,c,b,d){return-b/2*(Math.cos(Math.PI*a/d)-1)+c},easeInExpo:function(e,a,c,b,d){return a==0?c:b*Math.pow(2,10*(a/d-1))+c},easeOutExpo:function(e,a,c,b,d){return a==d?c+b:b*(-Math.pow(2,-10*a/d)+1)+c},easeInOutExpo:function(e,a,c,b,d){if(a==0)return c;if(a==d)return c+b;if((a/=d/2)<1)return b/2*Math.pow(2,10*(a-1))+c;return b/2*(-Math.pow(2,-10*--a)+2)+c},
  5. easeInCirc:function(e,a,c,b,d){return-b*(Math.sqrt(1-(a/=d)*a)-1)+c},easeOutCirc:function(e,a,c,b,d){return b*Math.sqrt(1-(a=a/d-1)*a)+c},easeInOutCirc:function(e,a,c,b,d){if((a/=d/2)<1)return-b/2*(Math.sqrt(1-a*a)-1)+c;return b/2*(Math.sqrt(1-(a-=2)*a)+1)+c},easeInElastic:function(e,a,c,b,d){e=1.70158;var f=0,g=b;if(a==0)return c;if((a/=d)==1)return c+b;f||(f=d*0.3);if(g<Math.abs(b)){g=b;e=f/4}else e=f/(2*Math.PI)*Math.asin(b/g);return-(g*Math.pow(2,10*(a-=1))*Math.sin((a*d-e)*2*Math.PI/f))+c},easeOutElastic:function(e,
  6. a,c,b,d){e=1.70158;var f=0,g=b;if(a==0)return c;if((a/=d)==1)return c+b;f||(f=d*0.3);if(g<Math.abs(b)){g=b;e=f/4}else e=f/(2*Math.PI)*Math.asin(b/g);return g*Math.pow(2,-10*a)*Math.sin((a*d-e)*2*Math.PI/f)+b+c},easeInOutElastic:function(e,a,c,b,d){e=1.70158;var f=0,g=b;if(a==0)return c;if((a/=d/2)==2)return c+b;f||(f=d*0.3*1.5);if(g<Math.abs(b)){g=b;e=f/4}else e=f/(2*Math.PI)*Math.asin(b/g);if(a<1)return-0.5*g*Math.pow(2,10*(a-=1))*Math.sin((a*d-e)*2*Math.PI/f)+c;return g*Math.pow(2,-10*(a-=1))*Math.sin((a*
  7. d-e)*2*Math.PI/f)*0.5+b+c},easeInBack:function(e,a,c,b,d,f){if(f==undefined)f=1.70158;return b*(a/=d)*a*((f+1)*a-f)+c},easeOutBack:function(e,a,c,b,d,f){if(f==undefined)f=1.70158;return b*((a=a/d-1)*a*((f+1)*a+f)+1)+c},easeInOutBack:function(e,a,c,b,d,f){if(f==undefined)f=1.70158;if((a/=d/2)<1)return b/2*a*a*(((f*=1.525)+1)*a-f)+c;return b/2*((a-=2)*a*(((f*=1.525)+1)*a+f)+2)+c},easeInBounce:function(e,a,c,b,d){return b-jQuery.easing.easeOutBounce(e,d-a,0,b,d)+c},easeOutBounce:function(e,a,c,b,d){return(a/=
  8. d)<1/2.75?b*7.5625*a*a+c:a<2/2.75?b*(7.5625*(a-=1.5/2.75)*a+0.75)+c:a<2.5/2.75?b*(7.5625*(a-=2.25/2.75)*a+0.9375)+c:b*(7.5625*(a-=2.625/2.75)*a+0.984375)+c},easeInOutBounce:function(e,a,c,b,d){if(a<d/2)return jQuery.easing.easeInBounce(e,a*2,0,b,d)*0.5+c;return jQuery.easing.easeOutBounce(e,a*2-d,0,b,d)*0.5+b*0.5+c}});

jQueryRotate.2.2.js

  1. // VERSION: 2.2 LAST UPDATE: 13.03.2012
  2. /*
  3. * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
  4. *
  5. * Made by Wilq32, wilq32@gmail.com, Wroclaw, Poland, 01.2009
  6. * Website: http://code.google.com/p/jqueryrotate/
  7. */
  8.  
  9. // Documentation removed from script file (was kinda useless and outdated)
  10.  
  11. (function($) {
  12. var supportedCSS,styles=document.getElementsByTagName("head")[0].style,toCheck="transformProperty WebkitTransform OTransform msTransform MozTransform".split(" ");
  13. for (var a=0;a<toCheck.length;a++) if (styles[toCheck[a]] !== undefined) supportedCSS = toCheck[a];
  14. // Bad eval to preven google closure to remove it from code o_O
  15. // After compresion replace it back to var IE = 'v' == '\v'
  16. var IE = eval('"v"=="\v"');
  17.  
  18. jQuery.fn.extend({
  19. rotate:function(parameters)
  20. {
  21. if (this.length===0||typeof parameters=="undefined") return;
  22. if (typeof parameters=="number") parameters={angle:parameters};
  23. var returned=[];
  24. for (var i=0,i0=this.length;i<i0;i++)
  25. {
  26. var element=this.get(i);
  27. if (!element.Wilq32 || !element.Wilq32.PhotoEffect) {
  28.  
  29. var paramClone = $.extend(true, {}, parameters);
  30. var newRotObject = new Wilq32.PhotoEffect(element,paramClone)._rootObj;
  31.  
  32. returned.push($(newRotObject));
  33. }
  34. else {
  35. element.Wilq32.PhotoEffect._handleRotation(parameters);
  36. }
  37. }
  38. return returned;
  39. },
  40. getRotateAngle: function(){
  41. var ret = [];
  42. for (var i=0,i0=this.length;i<i0;i++)
  43. {
  44. var element=this.get(i);
  45. if (element.Wilq32 && element.Wilq32.PhotoEffect) {
  46. ret[i] = element.Wilq32.PhotoEffect._angle;
  47. }
  48. }
  49. return ret;
  50. },
  51. stopRotate: function(){
  52. for (var i=0,i0=this.length;i<i0;i++)
  53. {
  54. var element=this.get(i);
  55. if (element.Wilq32 && element.Wilq32.PhotoEffect) {
  56. clearTimeout(element.Wilq32.PhotoEffect._timer);
  57. }
  58. }
  59. }
  60. });
  61.  
  62. // Library agnostic interface
  63.  
  64. Wilq32=window.Wilq32||{};
  65. Wilq32.PhotoEffect=(function(){
  66.  
  67. if (supportedCSS) {
  68. return function(img,parameters){
  69. img.Wilq32 = {
  70. PhotoEffect: this
  71. };
  72.  
  73. this._img = this._rootObj = this._eventObj = img;
  74. this._handleRotation(parameters);
  75. }
  76. } else {
  77. return function(img,parameters) {
  78. // Make sure that class and id are also copied - just in case you would like to refeer to an newly created object
  79. this._img = img;
  80.  
  81. this._rootObj=document.createElement('span');
  82. this._rootObj.style.display="inline-block";
  83. this._rootObj.Wilq32 =
  84. {
  85. PhotoEffect: this
  86. };
  87. img.parentNode.insertBefore(this._rootObj,img);
  88.  
  89. if (img.complete) {
  90. this._Loader(parameters);
  91. } else {
  92. var self=this;
  93. // TODO: Remove jQuery dependency
  94. jQuery(this._img).bind("load", function()
  95. {
  96. self._Loader(parameters);
  97. });
  98. }
  99. }
  100. }
  101. })();
  102.  
  103. Wilq32.PhotoEffect.prototype={
  104. _setupParameters : function (parameters){
  105. this._parameters = this._parameters || {};
  106. if (typeof this._angle !== "number") this._angle = 0 ;
  107. if (typeof parameters.angle==="number") this._angle = parameters.angle;
  108. this._parameters.animateTo = (typeof parameters.animateTo==="number") ? (parameters.animateTo) : (this._angle);
  109.  
  110. this._parameters.step = parameters.step || this._parameters.step || null;
  111. this._parameters.easing = parameters.easing || this._parameters.easing || function (x, t, b, c, d) { return -c * ((t=t/d-1)*t*t*t - 1) + b; }
  112. this._parameters.duration = parameters.duration || this._parameters.duration || 1000;
  113. this._parameters.callback = parameters.callback || this._parameters.callback || function(){};
  114. if (parameters.bind && parameters.bind != this._parameters.bind) this._BindEvents(parameters.bind);
  115. },
  116. _handleRotation : function(parameters){
  117. this._setupParameters(parameters);
  118. if (this._angle==this._parameters.animateTo) {
  119. this._rotate(this._angle);
  120. }
  121. else {
  122. this._animateStart();
  123. }
  124. },
  125.  
  126. _BindEvents:function(events){
  127. if (events && this._eventObj)
  128. {
  129. // Unbinding previous Events
  130. if (this._parameters.bind){
  131. var oldEvents = this._parameters.bind;
  132. for (var a in oldEvents) if (oldEvents.hasOwnProperty(a))
  133. // TODO: Remove jQuery dependency
  134. jQuery(this._eventObj).unbind(a,oldEvents[a]);
  135. }
  136.  
  137. this._parameters.bind = events;
  138. for (var a in events) if (events.hasOwnProperty(a))
  139. // TODO: Remove jQuery dependency
  140. jQuery(this._eventObj).bind(a,events[a]);
  141. }
  142. },
  143.  
  144. _Loader:(function()
  145. {
  146. if (IE)
  147. return function(parameters)
  148. {
  149. var width=this._img.width;
  150. var height=this._img.height;
  151. this._img.parentNode.removeChild(this._img);
  152.  
  153. this._vimage = this.createVMLNode('image');
  154. this._vimage.src=this._img.src;
  155. this._vimage.style.height=height+"px";
  156. this._vimage.style.width=width+"px";
  157. this._vimage.style.position="absolute"; // FIXES IE PROBLEM - its only rendered if its on absolute position!
  158. this._vimage.style.top = "0px";
  159. this._vimage.style.left = "0px";
  160.  
  161. /* Group minifying a small 1px precision problem when rotating object */
  162. this._container = this.createVMLNode('group');
  163. this._container.style.width=width;
  164. this._container.style.height=height;
  165. this._container.style.position="absolute";
  166. this._container.setAttribute('coordsize',width-1+','+(height-1)); // This -1, -1 trying to fix ugly problem with small displacement on IE
  167. this._container.appendChild(this._vimage);
  168.  
  169. this._rootObj.appendChild(this._container);
  170. this._rootObj.style.position="relative"; // FIXES IE PROBLEM
  171. this._rootObj.style.width=width+"px";
  172. this._rootObj.style.height=height+"px";
  173. this._rootObj.setAttribute('id',this._img.getAttribute('id'));
  174. this._rootObj.className=this._img.className;
  175. this._eventObj = this._rootObj;
  176. this._handleRotation(parameters);
  177. }
  178. else
  179. return function (parameters)
  180. {
  181. this._rootObj.setAttribute('id',this._img.getAttribute('id'));
  182. this._rootObj.className=this._img.className;
  183.  
  184. this._width=this._img.width;
  185. this._height=this._img.height;
  186. this._widthHalf=this._width/2; // used for optimisation
  187. this._heightHalf=this._height/2;// used for optimisation
  188.  
  189. var _widthMax=Math.sqrt((this._height)*(this._height) + (this._width) * (this._width));
  190.  
  191. this._widthAdd = _widthMax - this._width;
  192. this._heightAdd = _widthMax - this._height; // widthMax because maxWidth=maxHeight
  193. this._widthAddHalf=this._widthAdd/2; // used for optimisation
  194. this._heightAddHalf=this._heightAdd/2;// used for optimisation
  195.  
  196. this._img.parentNode.removeChild(this._img);
  197.  
  198. this._aspectW = ((parseInt(this._img.style.width,10)) || this._width)/this._img.width;
  199. this._aspectH = ((parseInt(this._img.style.height,10)) || this._height)/this._img.height;
  200.  
  201. this._canvas=document.createElement('canvas');
  202. this._canvas.setAttribute('width',this._width);
  203. this._canvas.style.position="relative";
  204. this._canvas.style.left = -this._widthAddHalf + "px";
  205. this._canvas.style.top = -this._heightAddHalf + "px";
  206. this._canvas.Wilq32 = this._rootObj.Wilq32;
  207.  
  208. this._rootObj.appendChild(this._canvas);
  209. this._rootObj.style.width=this._width+"px";
  210. this._rootObj.style.height=this._height+"px";
  211. this._eventObj = this._canvas;
  212.  
  213. this._cnv=this._canvas.getContext('2d');
  214. this._handleRotation(parameters);
  215. }
  216. })(),
  217.  
  218. _animateStart:function()
  219. {
  220. if (this._timer) {
  221. clearTimeout(this._timer);
  222. }
  223. this._animateStartTime = +new Date;
  224. this._animateStartAngle = this._angle;
  225. this._animate();
  226. },
  227. _animate:function()
  228. {
  229. var actualTime = +new Date;
  230. var checkEnd = actualTime - this._animateStartTime > this._parameters.duration;
  231.  
  232. // TODO: Bug for animatedGif for static rotation ? (to test)
  233. if (checkEnd && !this._parameters.animatedGif)
  234. {
  235. clearTimeout(this._timer);
  236. }
  237. else
  238. {
  239. if (this._canvas||this._vimage||this._img) {
  240. var angle = this._parameters.easing(0, actualTime - this._animateStartTime, this._animateStartAngle, this._parameters.animateTo - this._animateStartAngle, this._parameters.duration);
  241. this._rotate((~~(angle*10))/10);
  242. }
  243. if (this._parameters.step) {
  244. this._parameters.step(this._angle);
  245. }
  246. var self = this;
  247. this._timer = setTimeout(function()
  248. {
  249. self._animate.call(self);
  250. }, 10);
  251. }
  252.  
  253. // To fix Bug that prevents using recursive function in callback I moved this function to back
  254. if (this._parameters.callback && checkEnd){
  255. this._angle = this._parameters.animateTo;
  256. this._rotate(this._angle);
  257. this._parameters.callback.call(this._rootObj);
  258. }
  259. },
  260.  
  261. _rotate : (function()
  262. {
  263. var rad = Math.PI/180;
  264. if (IE)
  265. return function(angle)
  266. {
  267. this._angle = angle;
  268. this._container.style.rotation=(angle%360)+"deg";
  269. }
  270. else if (supportedCSS)
  271. return function(angle){
  272. this._angle = angle;
  273. this._img.style[supportedCSS]="rotate("+(angle%360)+"deg)";
  274. }
  275. else
  276. return function(angle)
  277. {
  278. this._angle = angle;
  279. angle=(angle%360)* rad;
  280. // clear canvas
  281. this._canvas.width = this._width+this._widthAdd;
  282. this._canvas.height = this._height+this._heightAdd;
  283.  
  284. // REMEMBER: all drawings are read from backwards.. so first function is translate, then rotate, then translate, translate..
  285. this._cnv.translate(this._widthAddHalf,this._heightAddHalf); // at least center image on screen
  286. this._cnv.translate(this._widthHalf,this._heightHalf); // we move image back to its orginal
  287. this._cnv.rotate(angle); // rotate image
  288. this._cnv.translate(-this._widthHalf,-this._heightHalf); // move image to its center, so we can rotate around its center
  289. this._cnv.scale(this._aspectW,this._aspectH); // SCALE - if needed ;)
  290. this._cnv.drawImage(this._img, 0, 0); // First - we draw image
  291. }
  292.  
  293. })()
  294. }
  295.  
  296. if (IE)
  297. {
  298. Wilq32.PhotoEffect.prototype.createVMLNode=(function(){
  299. document.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)");
  300. try {
  301. !document.namespaces.rvml && document.namespaces.add("rvml", "urn:schemas-microsoft-com:vml");
  302. return function (tagName) {
  303. return document.createElement('<rvml:' + tagName + ' class="rvml">');
  304. };
  305. } catch (e) {
  306. return function (tagName) {
  307. return document.createElement('<' + tagName + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');
  308. };
  309. }
  310. })();
  311. }
  312.  
  313. })(jQuery);

js

  1. $("#luckyBtn").on("click", function (e) {
  2.  
  3. // 根据money决定degree
  4. var money = 500,
  5. degree = 0;
  6.  
  7. // 逆时针角度
  8. var getDegree = function (money) {
  9. switch (money) {
  10. case 0:
  11. // random = 1 || random = 2
  12. var random = Math.ceil(Math.random() * 2 + 1);
  13.  
  14. switch (random) {
  15. case 1:
  16. return 22.5;
  17. break;
  18. case 2:
  19. return 202.5;
  20. break;
  21. default:
  22. return 202.5;
  23. }
  24. break;
  25. case 5:
  26. return 247.5;
  27. break;
  28. case 10:
  29. return 112.5;
  30. break;
  31. case 50:
  32. return 337.5;
  33. break;
  34. case 100:
  35. return 292.5;
  36. break;
  37. case 500:
  38. return 157.5;
  39. break;
  40. case 1000:
  41. return 67.5;
  42. default:
  43. return 202.5;
  44. }
  45. }
  46.  
  47. degree = getDegree(money);
  48.  
  49. // img rotate
  50. $("#rotate").rotate({
  51. duration:2000,
  52. angle: 0,
  53. animateTo:3600 + degree,
  54. easing: $.easing.easeOutSine,
  55. callback: function(){
  56. alert(money);
  57. }
  58. });
  59. });

jQuery转盘插件rotate的更多相关文章

  1. jQuery旋转插件—rotate

    jQuery旋转插件,支持Internet Explorer 6.0+ .Firefox 2.0 .Safari 3 .Opera 9 .Google Chrome rotate(angle) 正值表 ...

  2. jquery旋转插件rotate参数说明

    具体可见:http://www.jianshu.com/p/b632a1ed6a57

  3. jQuery旋转插件—rotate-摘自网友

    jQuery旋转插件—rotate 时间:2013年01月03日作者:愚人码头查看次数:5,660 views评论次数:6条评论 网上发现一个很有意思的jQuery旋转插件,支持Internet Ex ...

  4. html5网页动画总结--jQuery旋转插件jqueryrotate

    CSS3 提供了多种变形效果,比如矩阵变形.位移.缩放.旋转和倾斜等等,让页面更加生动活泼有趣,不再一动不动.然后 IE10 以下版本的浏览器不支持 CSS3 变形,虽然 IE 有私有属性滤镜(fil ...

  5. jQuery旋转插件

    jQuery旋转插件,支持Internet Explorer 6.0 + .Firefox 2.0.Safari 3.Opera 9.Google Chrome,高级浏览器下使用Transform,低 ...

  6. 9款超酷的jQuery/CSS3插件

    Article From here: http://js.itivy.com/?p=1883 1.jQuery向前滑动切换焦点图 这款jQuery焦点图非常绚丽,切换图片的时候每张图片是向前滑动的,很 ...

  7. jQuery抽奖插件 jQueryRotate

    实现代码 网页中引用 <script type="text/javascript" src="js/jquery.min.js"></scri ...

  8. 深入学习jQuery自定义插件

    原文地址:jQuery自定义插件学习 1.定义插件的方法 对象级别的插件扩展,即为jQuery类的实例增加方法, 调用:$(选择器).函数名(参数);      $(‘#id’).myPlugin(o ...

  9. [jQuery]jQuery DataTables插件自定义Ajax分页实现

    前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...

随机推荐

  1. matlab函数 bwperim

    功能:查找二值图像的边缘. 用法: BW2 = bwperim(BW1) BW2 = bwperim(BW1,conn) BW2 = bwperim(BW1,conn)表示从输入图像BW1中返回只包括 ...

  2. Docker入门(六):Stacks

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  3. 怎么在docker容器的mysql的编码格式变为utf8

    第一个方法: 1.  编辑MySql的配置文件 MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini,可以搜索,Linux下一般是/etc/my.cnf ...

  4. GET请求中的乱码原理解析和解决方案

    2. 乱码问题解决 基础知识 1)浏览器会在中文的UTF-8后加上上%得到URL编码   例如: %e8%b4%b9%e7%94%a8%e6%8a%a5%e9%94%80 2)以get的请求发送到to ...

  5. 使用VSTO写的一个工作证打印软件

    转行做HR近2年.最近公司要做工牌,工牌上要打印照片,姓名,工号和部门等信息.一共1000多人,如果手工排版手工打印的话,估计要死人. 于是coding的老毛病又犯了,想写个程序来打印工牌.还是拿最近 ...

  6. 实验楼的php比赛题,网页数据提取。

    实验楼的php比赛题,网页数据提取. 题目的地址:https://www.shiyanlou.com/contests/lou5/challenges 以下代码是题目的答案 <?php head ...

  7. HDU - 3001 Travelling(三进制状压dp)

    Travelling After coding so many days,Mr Acmer wants to have a good rest.So travelling is the best ch ...

  8. E20190418-hm

    distinct adj. 明显的,清楚的; 卓越的,不寻常的; 有区别的; 确切的; predicate  vt. 断言,断定; 宣布,宣讲; 使基于; n. 谓语; 述语;

  9. 转载-聊一聊深度学习的activation function

    目录 1. 背景 2. 深度学习中常见的激活函数 2.1 Sigmoid函数 2.2 tanh函数 2.3 ReLU函数 2.4 Leaky ReLu函数 2.5 ELU(Exponential Li ...

  10. 2017 Gartner Hype Cycle for Emerging Technologies: AI, AR/VR, Digital Platforms