当前位置:网站首页>Realize colorful lines and shape your heart

Realize colorful lines and shape your heart

2022-07-06 23:12:00 Fertilizer science

demonstration

 Insert picture description here

Source code display

Create a canvas

 <canvas width="300" height="300" style="width:100%;height:100vh;" id="c"></canvas>

Basic style settings

overflow grammar : overflow:{1,2}

= visible | hidden | scroll | auto

The default value is :visible

Value :
visible: Don't cut content .hidden: Cut the content that exceeds the size of the object , The scroll bar will not appear .scroll: Cut the content that exceeds the size of the object , And display the excess content in the way of scroll bar .auto: Cut content and add scrollbars when needed , This is a body Objects and textarea The default value of .

padding:[ | ]{1,4}

The default value is : Look at each individual property

Related properties :[ padding-top ] || [ padding-right ] || [ padding-bottom ] || [
padding-left ]

Value : : Use the length value to define the inner padding . Negative value not allowed : Use percentages to define internal padding . Negative value not allowed

explain : Retrieve or set the inner margin of the four sides of an object .

If all four parameter values are provided , Will press up 、 Right 、 Next 、 The order of the left acts on the four sides . If only one , Use for all four sides .
If you provide two , The first one is for 、 Next , The second one is for the left 、 Right . If three , The first one is for , The second one is for the left 、 Right , The third one is for .
Inline objects can use this property to set left 、 The inner patch on the right side ; To set the upper 、 The inner patch on both sides , You must first make the object appear at the block level or inline block level .
The corresponding script feature is padding.

 html,body{
    
            border: 0;
            padding: 0;
            margin: 0;
            overflow: hidden;
            background: #000;
}

.info{
    
  z-index:999;
  position : absolute;
  left:0;
  top:0;
  padding:10px;
  color:#fff;
  background: rgba(0,0,0,0.5);
  text-transform:capitalize;
}

use js To design animation effects

Defining variables

var canvas = document.getElementById('c');
var ctx = canvas.getContext("2d");
var height = void 0,width = void 0,innerpoints = [],outerpoints = [],particles = [];

var noofpoints = 200,trashold = 10;
var x = void 0,y = void 0,p = void 0,n = void 0,point = void 0,dx = void 0,dy = void 0,color = void 0;
deltaangle = Math.PI * 2 / noofpoints,
r = Math.min(height, width) * 0.5;

var distance = function distance(x1, y1, x2, y2) {
    
  return Math.sqrt(Math.pow(y2 - y1, 2) + Math.pow(x2 - x1, 2));
};
var mapVal = function mapVal(num, in_min, in_max, out_min, out_max) {
    
  return (num - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
};

Set up the canvas resize

var resize = function resize() {
    
  height = ctx.canvas.clientHeight;
  width = ctx.canvas.clientWidth;

  if (ctx.canvas.clientWidth !== canvas.width ||
  ctx.canvas.clientHeight !== canvas.height)
  {
    
    console.log("resized");
    canvas.width = width;
    canvas.height = height;
    ctx.translate(canvas.width / 2, canvas.height / 2);
    ctx.rotate(-Math.PI);
    innerpoints = [];
    r = 10;
    for (var i = deltaangle; i <= Math.PI * 2; i += deltaangle) {
    
      x = r * 16 * Math.pow(Math.sin(i), 3);
      y = r * (13 * Math.cos(i) - 5 * Math.cos(2 * i) - 2 * Math.cos(3 * i) - Math.cos(4 * i));
      innerpoints.push({
    
        x: x,
        y: y });


      x = 10 * r * 16 * Math.pow(Math.sin(i), 3);
      y = 10 * r * (13 * Math.cos(i) - 5 * Math.cos(2 * i) - 2 * Math.cos(3 * i) - Math.cos(4 * i));
      outerpoints.push({
    
        x: x,
        y: y });


      var step = random(0.001, 0.003, true);
      particles.push({
    
        step: step,
        x: x,
        y: y });

    }
  }
};

Design lines

var draw = function draw() {
    
  ctx.fillStyle = "rgba(0,0,0,0.03)";
  ctx.fillRect(-width, -height, width * 2, height * 2);
  ctx.beginPath();

  for (var i = 0; i < innerpoints.length; i++) {
    
    s = outerpoints[i];
    d = innerpoints[i];
    point = particles[i];

    if (distance(point.x, point.y, d.x, d.y) > 10) {
    
      dx = d.x - s.x;
      dy = d.y - s.y;

      point.x += dx * point.step;
      point.y += dy * point.step;
      color = distance(0, 0, point.x, point.y);
      ctx.beginPath();
      ctx.fillStyle = "hsl(" + color % 360 + ",100%,50%)";
      ctx.arc(point.x, point.y, 2, 0, Math.PI * 2, false);
      ctx.closePath();
      ctx.fill();
    } else {
    
      point.x = d.x;
      point.y = d.y;
      ctx.beginPath();
      ctx.arc(point.x, point.y, 2, 0, Math.PI * 2, false);
      ctx.closePath();
      ctx.fill();
      particles[i].x = s.x;
      particles[i].y = s.y;
      particles[i].step = random(0.001, 0.003, true);
    }
  }

};

Click to get the information directly

If you are learning python perhaps Java Even if it is C If you have any problems, you can leave me a message , Because in the early stage of learning, novices always take many detours , At this time, if there is no one to help, it is easy to give up . There are many such examples around. Many people change their majors and directions as they learn , Not only their own problems, but also the lack of correct learning . So as a passer-by, I hope to leave a message to me if you have any questions , It's not help, it's just a matter of typing a few lines easily .

Here you are python,Java Learning materials and interesting programming projects , More difficult to find resources . Anyway, it's not a loss to see .

原网站

版权声明
本文为[Fertilizer science]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207061538398668.html