动画原理——曲线

书籍名称:HTML5-Animation-with-JavaScript

书籍源码:https://github.com/lamberta/html5-animation


1.使用quadraticCurveTo,

  • 开始点:moveTo(20,20)
  • 控制点:quadraticCurveTo(20,100,200,20)的前两个参数,
  • 结束点:quadraticCurveTo(20,100,200,20)的后两个参数

图示如下:

2.曲线经过的点

如果你想让曲线经过一个点,可以利用下面这个公式来计算。其中xt,yt是我们希望曲线经过的目标点,而x0,y0,x2,y2分别为两个端点。通过这个公式可以计算出控制点x1,y1

x1 = xt * 2 - (x0 + x2) / 2;
y1 = yt * 2 - (y0 + y2) / 2;

03-curve-through-point.html代码:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Curve Through Point</title>
    <link rel="stylesheet" href="../include/style.css">
  </head>
  <body>
    <header>
      Example from <a href="http://amzn.com/1430236655?tag=html5anim-20"><em>Foundation HTML5 Animation with JavaScript</em></a>
    </header>
    <canvas id="canvas" width="400" height="400"></canvas>
    <aside>Move mouse on canvas element.</aside>

    <script src="../include/utils.js"></script>
    <script>
    window.onload = function () {
      var canvas = document.getElementById(‘canvas‘),
          context = canvas.getContext(‘2d‘),
          mouse = utils.captureMouse(canvas),
          x0 = 100,
          y0 = 200,
          x2 = 300,
          y2 = 200;

      canvas.addEventListener(‘mousemove‘, function () {
        context.clearRect(0, 0, canvas.width, canvas.height);

        var x1 = mouse.x * 2 - (x0 + x2) / 2,
            y1 = mouse.y * 2 - (y0 + y2) / 2;

        //curve through mouse
        context.beginPath();
        context.moveTo(x0, y0);
        context.quadraticCurveTo(x1, y1, x2, y2);
        context.stroke();
      }, false);
    };
    </script>
  </body>
</html>

3.多重曲线

时间: 2024-10-10 00:18:48

动画原理——曲线的相关文章

JS 实现无缝滚动动画原理(初学者入)

这段时间在教培训班的学生使用原生javascript实现无缝滚动的动画案例,做了这个原理演示的动画,分享给自学JS的朋友!博主希望对你们有帮助! 在讲解之前先看一下demo: demo:https://224137748.github.io/JS_warehouse/lunbo/domo.HTML源码:https://github.com/224137748/JS_warehouse/blob/master/lunbo/domo.HTML ps: 上面和下面的滚动进度是一致的,上面红色框是为了演

SVG描边动画原理

SVG描边动画原理其实很简单,主要利用以下两个属性 stroke-dasharray 制作虚线,使得黑白相间, stroke-dashoffset 使得虚线向开头偏移,这里的1500不精确,是我随便取的,下文介绍通过JS获取长度. 动画就是减少虚线偏移,那么实线就会慢慢漏出来了 JS获取长度 var path = document.querySelector('path'); var length = path.getTotalLength(); 然后改变path.style.strokeDas

动画原理

动画原理 动画的基本原理 : 让盒子的 offsetLeft   +  步长 原理 匀速运动封装函数 1 function animate(obj,target){ 2 var speed = obj.offsetLeft < target ? 5 : -5; // 用来判断 应该 + 还是 - 3 obj.timer = setInterval(function() { 4 var result = target - obj.offsetLeft; // 因为他们的差值不会超过5 5 obj.

从Sprite3D理解3D骨骼动画原理

为了能够更好的使用cocos为我们提供的Sprite3D,我和大家分享一下Sprite3D中关于骨骼动画原理的部分,本文使用cocos2d-x 3.2版本,这是cocos首次出现3D骨骼动画的版本,相对与本文写出来时候最新的3.5版本,由于没有其他比如灯光等功能,3D骨骼动画模块读起来要更加的清晰.如果文章有纰漏或者错误的地方,也请大家指教. 目前引擎支持3种动画格式,分别是.obj,.c3b,.c3t,由于.obj没有骨骼,.c3b是二进制,而.c3t是json格式,所以本文就用官方test中

Unity3D 骨骼动画原理学习笔记

最近研究了一下游戏中模型的骨骼动画的原理,做一个学习笔记,便于大家共同学习探讨. ps:最近改bug改的要死要活,博客写的吭哧吭哧的~ 首先列出学习参考的前人的文章,本文较多的参考了其中的表述: 1.骨骼动画详解 :http://blog.csdn.net/ccx1234/article/details/6641944,不过这篇文章的原文已经被csdn封了:D,可以看看对应的转载的文章也行 2.OpenGL10-骨骼动画原理篇:http://www.cnblogs.com/zhanglitong

骨骼动画原理(转载)

视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 本例程展示如何建立骨骼动画,有些人叫蒙皮动画 定义如下: 当前有两种模型动画的方式:顶点动画和骨骼动画.顶点动画中,每帧动画其实 就是模型特定姿态的一个“快照”.通过在帧之间插值的方法,引擎可以得到平滑 的动画效果.在骨骼动画中,模型具有互相连接的“骨骼”组成的骨架结构,通过 改变骨骼的朝向和位置来为模型生成动画. 骨骼动画比顶点动画要求更高的处理器性能,但同

android动画之从源码角度分析动画原理

以前一直不懂android的动画机制,android系统是如何实现动画的,所以导致只会做一些android系统已经为我们封装好的动画即:AlphaAnimation, TranslateAnimation, ScaleAnimation,RotateAnimation以及这些动画混合起来使用,其实有android系统为我们提供的这几种动画是可以满足我们平时的基本需求了,但是要做一些高级的动画就是不可能的,比如3D动画,所以就看了一下android系统所带动画的源码,做了一些总结,下面就是我对动画

解析 iOS 动画原理与实现

这篇文章不会教大家如何实现一个具体的动画效果,我会从动画的本质出发,来说说 iOS 动画的原理与实现方式. 什么是动画 动画,顾名思义,就是能“动”的画.人的眼睛对图像有短暂的记忆效应,所以当眼睛看到多张图片连续快速的切换时,就会被认为是一段连续播放的动画了. 比如,中国古代的“走马灯”,就是用的这个原理.有些人还会在一个本子每页上手绘一些漫画,当快速翻页的时候,也会看到动画的效果,比如: 图片来自网络 计算机动画的实现方式 动画是由一张张图片组成的,在计算机中,我们称每一张图片为 一帧画面 .

Android动画原理分析

最近在Android上做了一些动画效果,网上查了一些资料,有各种各样的使用方式,于是乘热打铁,想具体分析一下动画是如何实现的,Animation, Animator都有哪些区别等等. 首先说Animation(android.view.animation.Animation)对象. 无论是用纯java代码构建Animation对象,还是通过xml文件定义Animation,其实最终的结果都是 Animation a = new AlphaAnimation(); Animation b = ne