initial commit, worm thingy
This commit is contained in:
commit
a23a5b16e3
5 changed files with 181 additions and 0 deletions
61
flake.lock
generated
Normal file
61
flake.lock
generated
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1772963539,
|
||||
"narHash": "sha256-9jVDGZnvCckTGdYT53d/EfznygLskyLQXYwJLKMPsZs=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9dcb002ca1690658be4a04645215baea8b95f31d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
21
flake.nix
Normal file
21
flake.nix
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
description = "Javascript development";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
in
|
||||
{
|
||||
devShells.default = pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
typescript-language-server
|
||||
];
|
||||
};
|
||||
});
|
||||
}
|
||||
17
index.html
Normal file
17
index.html
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Sketch</title>
|
||||
|
||||
<!-- <link rel="stylesheet" type="text/css" href="style.css"> -->
|
||||
|
||||
<script src="p5.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script src="sketch.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
2
p5.min.js
vendored
Normal file
2
p5.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
80
sketch.js
Normal file
80
sketch.js
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
var vec = p5.Vector;
|
||||
|
||||
class Segment {
|
||||
constructor(x, y, size) {
|
||||
this.size = size;
|
||||
this.pos = new vec(x, y);
|
||||
this.forward = new vec(0, 0);
|
||||
}
|
||||
|
||||
get_rel(angle, d) {
|
||||
let dir = vec.rotate(this.forward, angle);
|
||||
dir.setMag(d);
|
||||
return vec.add(this.pos, dir)
|
||||
}
|
||||
|
||||
follow(x, y) {
|
||||
let target = new vec(x, y);
|
||||
let dir = vec.sub(this.pos, target);
|
||||
this.forward = vec.sub(target, this.pos);
|
||||
dir.setMag(this.size);
|
||||
this.pos = vec.add(target, dir);
|
||||
}
|
||||
}
|
||||
|
||||
var n = 0;
|
||||
var sizes = [10, 15, 20, 25, 30, 24, 27, 21, 15, 17, ]
|
||||
var segments = [];
|
||||
function setup() {
|
||||
createCanvas(800, 800);
|
||||
n = sizes.length;
|
||||
for (let i = 0; i < n; i++) {
|
||||
let seg = new Segment(400, 400, sizes[i]);
|
||||
segments.push(seg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function draw() {
|
||||
background(150);
|
||||
|
||||
// fisica
|
||||
segments[0].follow(mouseX, mouseY);
|
||||
for (let i = 1; i < n; i++) {
|
||||
let prev_seg = segments[i - 1];
|
||||
segments[i].follow(prev_seg.pos.x, prev_seg.pos.y);
|
||||
}
|
||||
|
||||
// dibujar
|
||||
fill(100, 200, 150);
|
||||
stroke(0);
|
||||
strokeWeight(2);
|
||||
|
||||
beginShape();
|
||||
|
||||
let head = segments[0];
|
||||
let tail = segments[n - 1];
|
||||
|
||||
for (let a = -HALF_PI; a <= HALF_PI; a += PI / 10) {
|
||||
let p = head.get_rel(a, head.size);
|
||||
vertex(p.x, p.y);
|
||||
}
|
||||
|
||||
for (let i = 1; i < n - 1; i++) {
|
||||
let p = segments[i].get_rel(HALF_PI, segments[i].size);
|
||||
vertex(p.x, p.y);
|
||||
}
|
||||
|
||||
for (let a = HALF_PI; a <= HALF_PI + PI; a += PI / 10) {
|
||||
let p = tail.get_rel(a, tail.size);
|
||||
vertex(p.x, p.y);
|
||||
}
|
||||
|
||||
for (let i = n - 2; i >= 1; i--) {
|
||||
let p = segments[i].get_rel(-HALF_PI, segments[i].size);
|
||||
vertex(p.x, p.y);
|
||||
}
|
||||
|
||||
|
||||
endShape(CLOSE);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue