zoukankan      html  css  js  c++  java
  • 89.canvas制作爱心

    <!DOCTYPE html>
    <html>
    <head>
        <title>JavaScript和html53D玫瑰花(程序员的情人节礼物)</title>
        <meta charset="utf-8">
    </head>
    <body>
    <canvas id="c" height="500" width="500"></canvas>
    <script>
        var b = document.body;
        var c = document.getElementsByTagName('canvas')[0];
        var a = c.getContext('2d');
        document.body.clientWidth;
    </script>
    <script>
        // start of submission //
        with(m = Math) C = cos, S = sin, P = pow, R = random;
        c.width = c.height = f = 500;
        h = -250;

        function p(a, b, c) {
            if(c > 60) return [S(a * 7) * (13 + 5 /
                (.2 + P(b * 4, 4))) - S(b) * 50, b *
            f + 50,625 + C(a * 7) * (13 + 5 /
                (.2 + P(b * 4, 4))) + b * 400, a * 1 - b / 2, a];
            A = a * 2 - 1;
            B = b * 2 - 1;
            if(A * A + B * B < 1) {
                if(c > 37) {
                    n = (j = c & 1) ? 6 : 4;
                    o = .5 / (a + .01) + C(b * 125) * 3 - a * 300;
                    w = b * h;
                    return [o * C(n) + w * S(n) + j * 610 - 390, o *
                    S(n) - w * C(n) + 550 - j * 350, 1180 + C(B + A) *
                    99 - j * 300, .4 - a * .1 + P(1 - B * B, -h * 6)
                    * .15 - a * b * .4 + C(a + b) / 5 + P(C((o * (a + 1)+
                        (B > 0 ? w : -w)) / 25), 30)* .1 * (1 - B * B),
                        o / 1e3 + .7 - o * w * 3e-6]
                }
                if(c > 32) {
                    c = c * 1.16 - .15;
                    o = a * 45 - 20;
                    w = b * b * h;
                    z = o * S(c) + w * C(c) + 620;
                    return [o * C(c) - w * S(c), 28 + C(B * .5) * 99 -
                    b * b * b * 60 - z / 2 - h, z, (b * b * .3 +
                        P((1 - (A * A)), 7) * .15 + .3) * b, b * .7]
                }
                o = A * (2 - b) * (80 - c * 2);
                w = 99 - C(A) * 120 - C(b) * (-h - c * 4.9) +
                    C(P(1 - b, 7)) * 50 + c * 2;
                z = o * S(c) + w * C(c) + 700;
                return [o * C(c) - w * S(c), B * 99 - C(P(b, 7)) *
                50 - c / 3 - z / 1.35 + 450,z, (1 - b / 1.2) *
                .9 + a * .1, P((1 - b), 20) / 4 + .05]
            }
        }
        setInterval('for(i=0;i<1e4;i++)if(s=p(R(),R(),i%46/.74)){z=s[2];x=~~(s[0]*f/z-h);y=~~(s[1]*f/z-h);if(!m[q=y*f+x]|m[q]>z)m[q]=z,a.fillStyle="rgb("+~(s[3]*h)+","+~(s[4]*h)+","+~(s[3]*s[3]*-80)+")",a.fillRect(x,y,1,1)}', 0)
        // end of submission //
    </script>
    </body>
    </html>
     
     
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>I  LOVE  YOU</title><!-- 这是网页标题 -->
    <style>
    body{
      overflow: hidden;
      margin: 0;
    }
    h1{
      position: fixed;
      top: 50%;
      left: 0;
       100%;
      text-align: center;
      transform:translateY(-50%);
      font-family: 'Love Ya Like A Sister', cursive;
      font-size: 20x;
      color: #c70012;
      padding: 0 20px;
    }
    h1 span{
        font-size:20px;
    }
    div{

    }
    </style>

    </head>
    <body>

    <h1 id="h1"></h1>
    <div>
    <canvas></canvas> <!--canvas 画布-->
    </div>

    <script>
    var canvas = document.querySelector("canvas"),
      ctx = canvas.getContext("2d");

    var ww,wh;

    function onResize(){
      ww = canvas.width = window.innerWidth;
      wh = canvas.height = window.innerHeight;
    }

    ctx.strokeStyle = "red";
    ctx.shadowBlur = 25;
    ctx.shadowColor = "hsla(0, 100%, 60%,0.5)";

    var precision = 100;
    var hearts = [];
    var mouseMoved = false;
    function onMove(e){
      mouseMoved = true;
      if(e.type === "touchmove"){
        hearts.push(new Heart(e.touches[0].clientX, e.touches[0].clientY));
        hearts.push(new Heart(e.touches[0].clientX, e.touches[0].clientY));
      }
      else{
        hearts.push(new Heart(e.clientX, e.clientY));
        hearts.push(new Heart(e.clientX, e.clientY));
      }
    }

    var Heart = function(x,y){
      this.x = x || Math.random()*ww;
      this.y = y || Math.random()*wh;
      this.size = Math.random()*2 + 1;
      this.shadowBlur = Math.random() * 10;
      this.speedX = (Math.random()+0.2-0.6) * 8;
      this.speedY = (Math.random()+0.2-0.6) * 8;
      this.speedSize = Math.random()*0.05 + 0.01;
      this.opacity = 1;
      this.vertices = [];
      for (var i = 0; i < precision; i++) {
        var step = (i / precision - 0.5) * (Math.PI * 2);
        var vector = {
          x : (15 * Math.pow(Math.sin(step), 3)),
          y : -(13 * Math.cos(step) - 5 * Math.cos(2 * step) - 2 * Math.cos(3 * step) - Math.cos(4 * step)) 
        }
        this.vertices.push(vector);
      }
    }

    Heart.prototype.draw = function(){
      this.size -= this.speedSize;
      this.x += this.speedX;
      this.y += this.speedY;
      ctx.save();
      ctx.translate(-1000,this.y);
      ctx.scale(this.size, this.size);
      ctx.beginPath();
      for (var i = 0; i < precision; i++) {
        var vector = this.vertices[i];
        ctx.lineTo(vector.x, vector.y);
      }
      ctx.globalAlpha = this.size;
      ctx.shadowBlur = Math.round((3 - this.size) * 10);
      ctx.shadowColor = "hsla(0, 100%, 60%,0.5)";
      ctx.shadowOffsetX = this.x + 1000;
      ctx.globalCompositeOperation = "screen"
      ctx.closePath();
      ctx.fill()
      ctx.restore();
    };


    function render(a){
      requestAnimationFrame(render);

      hearts.push(new Heart())
      ctx.clearRect(0,0,ww,wh);
      for (var i = 0; i < hearts.length; i++) {
        hearts[i].draw();
        if(hearts[i].size <= 0){
          hearts.splice(i,1);
          i--;
        }
      }
    }


    onResize();
    window.addEventListener("mousemove", onMove);
    window.addEventListener("touchmove", onMove);
    window.addEventListener("resize", onResize);
    requestAnimationFrame(render);

    window.onload=function starttime(){
            time(h1,'2019,2,14');     // 在一起的时间
            ptimer = setTimeout(starttime,1000); // 添加计时器
    }

        function time(obj,futimg){
            var nowtime = new Date().getTime(); // 现在时间转换为时间戳
            var futruetime =  new Date(futimg).getTime(); // 未来时间转换为时间戳
            var msec = nowtime-futruetime; // 毫秒 未来时间-现在时间
            var time = (msec/1000);  // 毫秒/1000
            var day = parseInt(time/86400); // 天  24*60*60*1000 
            var hour = parseInt(time/3600)-24*day;    // 小时 60*60 总小时数-过去的小时数=现在的小时数 
            var minute = parseInt(time%3600/60); // 分 -(day*24) 以60秒为一整份 取余 剩下秒数 秒数/60 就是分钟数
            var second = parseInt(time%60);  // 以60秒为一整份 取余 剩下秒数
            obj.innerHTML="我与你<br>咱俩在一起的时间已经:<br>"+day+"天"+hour+"小时"+minute+"分"+second+"秒"+"了<br><span>不管面临多大的压力,不管前面的路如何崎岖.<br>不管经历过什么,我仍坚信最浪漫的事就是和你一起慢慢变老.<br>相信中间的计时器,将永远继续下去,直至数据溢出.</span>"

            return true;
        }
    </script>

    </body>
    </html>
  • 相关阅读:
    Mybatis oracle多表联合查询分页数据重复的问题
    The Decade of Deep Learning
    D3S – A Discriminative Single Shot Segmentation Tracker
    Recent Advancements in NLP
    A list of datasets directly related to Music Information Retrieval Datasets
    Best Resources for Imbalanced Classification
    Attention-based Dropout Layer for Weakly Supervised Object Localization
    Learning a Discriminative Filter Bank within a CNN for Fine-grained Recognition
    Batch DropBlock Network for Person Re-identification and Beyond
    Cross-channel Communication Networks
  • 原文地址:https://www.cnblogs.com/sqyambition/p/11733464.html
Copyright © 2011-2022 走看看