From ff94cff8208aced4cc6a1268045a0fcf6ead176d Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 17 Apr 2023 18:10:38 +1200 Subject: [PATCH] rfid --- Insperation/Screenshot 2023-04-11 163356.png | Bin 0 -> 86127 bytes Insperation/Screenshot 2023-04-14 225712.png | Bin 0 -> 102095 bytes docs/index.html | 4 +- docs/js/helper.js | 22 +- docs/js/index.js | 7 +- docs/js/objects.js | 68 +-- rfid/config.json | 16 + rfid/css/styles.css | 111 +++++ rfid/index.html | 58 +++ rfid/js/helper.js | 284 ++++++++++++ rfid/js/index.js | 319 +++++++++++++ rfid/js/math.js | 77 ++++ rfid/js/objects.js | 449 +++++++++++++++++++ webGl/first test/index.html | 21 + webGl/first test/main.js | 98 ++++ 15 files changed, 1493 insertions(+), 41 deletions(-) create mode 100644 Insperation/Screenshot 2023-04-11 163356.png create mode 100644 Insperation/Screenshot 2023-04-14 225712.png create mode 100644 rfid/config.json create mode 100644 rfid/css/styles.css create mode 100644 rfid/index.html create mode 100644 rfid/js/helper.js create mode 100644 rfid/js/index.js create mode 100644 rfid/js/math.js create mode 100644 rfid/js/objects.js create mode 100644 webGl/first test/index.html create mode 100644 webGl/first test/main.js diff --git a/Insperation/Screenshot 2023-04-11 163356.png b/Insperation/Screenshot 2023-04-11 163356.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc842947ded1a13170b5a87d54efe228d74ac61 GIT binary patch literal 86127 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%0DNXSdg-aj8D^ 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 c=?VJvpKzopr0E{LoyZ`_I literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html index c5306aa..5da07a5 100644 --- a/docs/index.html +++ b/docs/index.html @@ -34,8 +34,8 @@ Press "P" to show/hide the control panel


-

Degrees Per Second

- +

Speed

+

Controls

diff --git a/docs/js/helper.js b/docs/js/helper.js index ca19152..5d76915 100644 --- a/docs/js/helper.js +++ b/docs/js/helper.js @@ -3,15 +3,11 @@ async function fetchConfig(className) { const config = { PolyTwistColourWidth: [ { type: "range", min: 3, max: 10, defaultValue: 5, property: "sides" }, - { type: "range", min: 1, max: 600, defaultValue: 400, property: "width" }, + { type: "range", min: 400, max: 400, defaultValue: 400, property: "width" }, + { type: "range", min: 2, max: 5, defaultValue: 5, property: "line_width" }, { type: "range", min: 1, max: 100, defaultValue: 50, property: "depth" }, - { - type: "range", - min: -180, - max: 180, - defaultValue: -90, - property: "rotation", - }, + { type: "range", min: -180, max: 180, defaultValue: -90, property: "rotation", }, + { type: "range", min: 1, max: 500, defaultValue: 100, property: "speedMultiplier", }, { type: "color", defaultValue: "#4287f5", property: "colour1" }, { type: "color", defaultValue: "#42f57b", property: "colour2" }, ], @@ -219,7 +215,7 @@ function drawEyelidAccident(x1, y1) { ctx.stroke(); } -function DrawPolygon(sides, width, rotation, colour) { +function DrawPolygon(sides, width, rotation, colour,line_width) { ctx.beginPath(); ctx.moveTo( centerX + width * Math.cos((rotation * Math.PI) / 180), @@ -229,14 +225,14 @@ function DrawPolygon(sides, width, rotation, colour) { for (var i = 1; i <= sides; i += 1) { ctx.lineTo( centerX + - width * - Math.cos((i * 2 * Math.PI) / sides + (rotation * Math.PI) / 180), + width * + Math.cos((i * 2 * Math.PI) / sides + (rotation * Math.PI) / 180), centerY + - width * Math.sin((i * 2 * Math.PI) / sides + (rotation * Math.PI) / 180) + width * Math.sin((i * 2 * Math.PI) / sides + (rotation * Math.PI) / 180) ); } ctx.strokeStyle = colour; - ctx.lineWidth = 3; + ctx.lineWidth = line_width; ctx.stroke(); } diff --git a/docs/js/index.js b/docs/js/index.js index cb14579..7ac08b6 100644 --- a/docs/js/index.js +++ b/docs/js/index.js @@ -7,7 +7,7 @@ centerX = ctx.canvas.width / 2; centerY = ctx.canvas.height / 2; -let deg_per_sec = 5; +let deg_per_sec = 10; let targetFps = 60; let frameDuration = 1000 / targetFps; @@ -39,6 +39,8 @@ function createInstance(className, args) { } } + + async function updateDrawObj() { const shapeSelector = document.getElementById("shape-selector"); const selectedShape = shapeSelector.value; @@ -52,6 +54,9 @@ async function updateDrawObj() { .map((item) => item.defaultValue); drawObj = createInstance(selectedShape, defaultValues); + + // drawObj = await createShapeWithRandomProperties(813311281, config1); + console.log(drawObj) drawObj.initialise(config); } diff --git a/docs/js/objects.js b/docs/js/objects.js index e070318..ae05084 100644 --- a/docs/js/objects.js +++ b/docs/js/objects.js @@ -1,6 +1,7 @@ class BaseShape { constructor() { this.controls = []; // Keep track of created elements and event listeners + this.speedMultiplier = 100; } initialise(config) { @@ -8,6 +9,9 @@ class BaseShape { const { element, listener } = addControl(item, this); this.controls.push({ element, listener }); } + + const { element, listener } = addControl({ type: "range", min: 1, max: 500, defaultValue: 100, property: "speedMultiplier", }, this); + this.controls.push({ element, listener }); } remove() { @@ -30,20 +34,23 @@ class BaseShape { } class PolyTwistColourWidth extends BaseShape { - constructor(sides, width, depth, rotation, colour1, colour2) { + constructor(sides, width,line_width, depth, rotation, speedMultiplier,colour1, colour2) { super(); this.sides = sides; this.width = width; + this.line_width = line_width; this.depth = depth; this.rotation = rotation; + this.speedMultiplier = speedMultiplier; this.colour1 = colour1; this.colour2 = colour2; } - draw(innerRotation) { + draw(rotation) { + rotation*=(this.speedMultiplier/100) let out_angle = 0; const innerAngle = 180 - ((this.sides - 2) * 180) / this.sides; - const scopeAngle = innerRotation - (innerAngle * Math.floor(innerRotation / innerAngle)); + const scopeAngle = rotation - (innerAngle * Math.floor(rotation / innerAngle)); if (scopeAngle < innerAngle / 2) { out_angle = innerAngle / (2 * Math.cos((2 * Math.PI * scopeAngle) / (3 * innerAngle))) - innerAngle / 2; @@ -57,7 +64,7 @@ class PolyTwistColourWidth extends BaseShape { for (let i = 0; i < this.depth; i++) { const fraction = i / this.depth; const ncolour = LerpHex(this.colour1, this.colour2, fraction); - DrawPolygon(this.sides, this.width * widthMultiplier ** i, out_angle * i + this.rotation, ncolour); + DrawPolygon(this.sides, this.width * widthMultiplier ** i, out_angle * i + this.rotation, ncolour,this.line_width); } } } @@ -68,19 +75,22 @@ class FloralPhyllo extends BaseShape { this.depth = depth; this.colour1 = colour1; this.colour2 = colour2; + this.speedMultiplier = 500; } - draw(angle) { + draw(rotation) { + rotation*=(this.speedMultiplier/100) // var c = 24; //something to do with width. but not width var c = 1; //something to do with width. but not width //dont make larger than 270 unless altering the number of colours in lerpedColours for (let n = 200; n > 0; n -= 1) { - const a = n * angle / 1000; //137.5; + // let ncolour = LerpHex(this.colour1, this.colour2, n); + const a = n * rotation / 1000; //137.5; const r = c * Math.sqrt(n); const x = r * Math.cos(a) + centerX; const y = r * Math.sin(a) + centerY; - drawEyelid(n * 2.4 + 40, x, y, this.colour1); + drawEyelid(n * 2.4 + 40, x, y, ncolour); } } } @@ -93,6 +103,7 @@ class Spiral1 extends BaseShape { } draw(rotation) { + rotation*=(this.speedMultiplier/100) var rot = Math.round((this.sides - 2) * 180 / this.sides * 2) var piv = 360 / this.sides; var stt = 0.5 * Math.PI - rad(rot) //+ rad(rotation); @@ -129,6 +140,7 @@ class FloralAccident extends BaseShape { } draw(rotation) { + rotation*=(this.speedMultiplier/100) var rot = Math.round((this.sides - 2) * 180 / this.sides * 2) var piv = 360 / this.sides; var stt = 0.5 * Math.PI - rad(rot) //+ rad(rotation); @@ -164,13 +176,13 @@ class FloralPhyllo_Accident extends BaseShape { this.colour2 = colour2; } - draw(angle) { - + draw(rotation) { + rotation*=(this.speedMultiplier/100) var c = 24; //something to do with width. but not width for (let n = 0; n < 300; n += 1) { let ncolour = LerpHex(this.colour1, this.colour2, Math.cos(rad(n / 2))); - let a = n * (angle / 1000 + 100); //137.5; + let a = n * (rotation / 1000 + 100); //137.5; let r = c * Math.sqrt(n); let x = r * Math.cos(a) + centerX; let y = r * Math.sin(a) + centerY; @@ -191,9 +203,10 @@ class Nodal_expanding extends BaseShape { this.colour_change = colour_change } - draw(step) { - let colour_change = this.colour_change / 10 - var angle = 360 / this.points * step + draw(rotation) { + rotation*=(this.speedMultiplier/100) + let colour_change = this.colour_change / 8 + var angle = 360 / this.points * rotation var start_angle = angle; var done = false; @@ -209,6 +222,7 @@ class Nodal_expanding extends BaseShape { length += this.expand; ctx.lineWidth = this.line_width;//try 1 ctx.strokeStyle = ncolour; + ctx.lineCap = "round" // ctx.strokeStyle = colourToText(ncolour); console.log(ncolour) ctx.stroke(); @@ -227,14 +241,15 @@ class Nodal extends BaseShape { this.colour = colour; } // Draw_nodal(300, 100, 31, rotation, "blue"); - draw(rotate) { + draw(rotation) { + rotation*=(this.speedMultiplier/100) // console.log(rotate) var angle = 360 / this.points * this.step ctx.beginPath(); var start_angle = angle; var done = false; var total_moves = 1; - ctx.moveTo(centerX + (Math.cos(rad(angle + rotate)) * this.width), centerY + (Math.sin(rad(angle + rotate)) * this.width)); + ctx.moveTo(centerX + (Math.cos(rad(angle + rotation)) * this.width), centerY + (Math.sin(rad(angle + rotation)) * this.width)); while (done != true) { if ((total_moves * this.step) % this.points != 0) { @@ -246,7 +261,7 @@ class Nodal extends BaseShape { } } for (let z = 1; z <= total_moves; z++) { - ctx.lineTo(centerX + (Math.cos(rad(angle * z + rotate)) * this.width), centerY + (Math.sin(rad(angle * z + rotate)) * this.width)); + ctx.lineTo(centerX + (Math.cos(rad(angle * z + rotation)) * this.width), centerY + (Math.sin(rad(angle * z + rotation)) * this.width)); } ctx.lineWidth = this.line_width;//try 1 ctx.strokeStyle = this.colour; @@ -263,12 +278,12 @@ class Phyllotaxis extends BaseShape { this.colour2 = colour2; } // Draw_nodal(300, 100, 31, rotation, "blue"); - draw(angle) { - + draw(rotation) { + rotation*=(this.speedMultiplier/100) for (let n = 0; n < this.nMax; n += 1) { const ncolour = LerpHex(this.colour1, this.colour2, n / this.nMax); // const ncolour = LerpHex(this.colour1, this.colour2, (n/this.nMax)**2); - const a = n * (angle / 1000)//137.5; + const a = n * (rotation / 1000)//137.5; const r = this.width * Math.sqrt(n); const x = r * Math.cos(a) + centerX; const y = r * Math.sin(a) + centerY; @@ -302,12 +317,13 @@ class SquareTwist_angle extends BaseShape { ctx.restore(); } // DrawSquareTwist_angle(400,0,rotation,"red") - draw(innerRotation) { - let out_angle = innerRotation; + draw(rotation) { + rotation*=(this.speedMultiplier/100) + let out_angle = rotation; let widthMultiplier = 1 / (2 * Math.sin(Math.PI / 180 * (130 - out_angle + 90 * Math.floor(out_angle / 90)))) + 0.5 for (let i = 0; i < 25; i++) { - this.drawSquare(innerRotation * i, this.width * widthMultiplier ** i, this.colour1) + this.drawSquare(rotation * i, this.width * widthMultiplier ** i, this.colour1) } } @@ -333,6 +349,7 @@ class rectangle_pattern1 extends BaseShape { } // Draw_rectangle_pattern1(rotation, squares, 200, "blue"); draw(rotation) { + rotation*=(this.speedMultiplier/100) for (let z = 0; z < 360; z += 360 / this.squares) { this.drawSquare(z + rotation, this.width, this.colour1); } @@ -354,14 +371,15 @@ class EyePrototype extends BaseShape { ]; this.cooldown = 0; } - drawEyelid(step) { + drawEyelid(rotation) { + rotation*=(this.speedMultiplier/100) ctx.lineWidth = 1; ctx.beginPath(); ctx.moveTo(this.points[0][0], this.points[0][1]); - ctx.quadraticCurveTo(250, 250 - step, this.points[1][0], this.points[0][1]); + ctx.quadraticCurveTo(250, 250 - rotation, this.points[1][0], this.points[0][1]); ctx.moveTo(this.points[0][0], this.points[0][1]); - ctx.quadraticCurveTo(250, 250 + step, this.points[1][0], this.points[0][1]); + ctx.quadraticCurveTo(250, 250 + rotation, this.points[1][0], this.points[0][1]); ctx.stroke(); } eyelidCut(step) { diff --git a/rfid/config.json b/rfid/config.json new file mode 100644 index 0000000..bfed6e4 --- /dev/null +++ b/rfid/config.json @@ -0,0 +1,16 @@ +{ + "PolyTwistColourWidth": [ + { "type": "range", "min": 3, "max": 10, "defaultValue": 5, "property": "sides" }, + { "type": "range", "min": 1, "max": 600, "defaultValue": 300, "property": "width" }, + { "type": "range", "min": 1, "max": 100, "defaultValue": 50, "property": "depth" }, + { "type": "range", "min": 0, "max": 360, "defaultValue": 180, "property": "rotation" }, + { "type": "color", "defaultValue": "#4287f5", "property": "colour1" }, + { "type": "color", "defaultValue": "#42f57b", "property": "colour2" } + ], + "FloralPhyllo": [ + { "type": "range", "min": 1, "max": 600, "defaultValue": 300, "property": "width" }, + { "type": "range", "min": 1, "max": 100, "defaultValue": 50, "property": "depth" }, + { "type": "color", "defaultValue": "#4287f5", "property": "colour1" }, + { "type": "color", "defaultValue": "#4287f5", "property": "colour2" } + ] + } \ No newline at end of file diff --git a/rfid/css/styles.css b/rfid/css/styles.css new file mode 100644 index 0000000..612d6e4 --- /dev/null +++ b/rfid/css/styles.css @@ -0,0 +1,111 @@ +body { + -webkit-box-sizing: border-box; + /* Safari/Chrome, other WebKit */ + -moz-box-sizing: border-box; + /* Firefox, other Gecko */ + box-sizing: border-box; + /* Opera/IE 8+ */ + height: 100% +} + +p { + margin: 0px; +} + +canvas { + position: absolute; +} + +#toolbar { + display: flex; + flex-flow: column; + height: 100%; + + position: absolute; + padding: 0px 20px 0px 20px; + width: 500px; + height: 100vh; + background-color: rgb(189, 189, 189); +} + +#custom { + display: flex; + flex-flow: column; + height: 100%; + + /* position: absolute; */ + padding: 0px 20px 0px 20px; + /* width: 500px; */ + /* height: 100vh; */ + background-color: rgb(189, 189, 189); +} + +.button { + display: block; + position: absolute; + right: 20px; + z-index: 100; +} + + +.controls { + display: flex; + margin: 8px 0px; +} + +.controlFrameButton { + width: 8%; +} +.controlPauseButton { + width: 80%; + margin: auto; +} +/* + */ + +/* CSS */ +.button-8 { + background-color: #e1ecf4; + border-radius: 3px; + border: 1px solid #7aa7c7; + box-shadow: rgba(255, 255, 255, .7) 0 1px 0 0 inset; + box-sizing: border-box; + color: #1f3f55; + cursor: pointer; + display: inline-block; + /* font-family: -apple-system,system-ui,"Segoe UI","Liberation Sans",sans-serif; */ + font-size: 13px; + font-weight: 400; + line-height: 1.15385; + /* margin: 0; */ + outline: none; + padding: 8px .8em; + position: relative; + text-align: center; + text-decoration: none; + user-select: none; + -webkit-user-select: none; + touch-action: manipulation; + vertical-align: baseline; + white-space: nowrap; +} + +.button-8:hover, +.button-8:focus { + background-color: #b3d3ea; + color: #2c5777; +} + +.button-8:focus { + box-shadow: 0 0 0 4px rgba(0, 149, 255, .15); +} + +.button-8:active { + background-color: #a0c7e4; + box-shadow: none; + color: #2c5777; +} + +.buttonReset{ + background-color: #f4e1e1; +} \ No newline at end of file diff --git a/rfid/index.html b/rfid/index.html new file mode 100644 index 0000000..c5306aa --- /dev/null +++ b/rfid/index.html @@ -0,0 +1,58 @@ + + + + + + Document + + + + + +
+
+ +
+
+

Controls:

+

+ Press "Space" to pause and start the animation +

+

+ Press "P" to show/hide the control panel +

+
+

Degrees Per Second

+ +
+

Controls

+
+ + + +
+ +
+
+ +
+ + + + + + + + \ No newline at end of file diff --git a/rfid/js/helper.js b/rfid/js/helper.js new file mode 100644 index 0000000..5955557 --- /dev/null +++ b/rfid/js/helper.js @@ -0,0 +1,284 @@ +async function fetchConfig(className) { + // const config = await $.getJSON("config.json"); + const config = { + PolyTwistColourWidth: [ + { type: "range", min: 3, max: 10, defaultValue: 5, property: "sides" }, + { type: "range", min: 1, max: 600, defaultValue: 400, property: "width" }, + { type: "range", min: 1, max: 100, defaultValue: 50, property: "depth" }, + { type: "range", min: -180, max: 180, defaultValue: -90, property: "rotation" }, + { type: "color", defaultValue: "#4287f5", property: "colour1" }, + { type: "color", defaultValue: "#42f57b", property: "colour2" }, + ], + FloralPhyllo: [ + { type: "range", min: 1, max: 600, defaultValue: 300, property: "width" }, + { type: "range", min: 1, max: 100, defaultValue: 50, property: "depth" }, + { type: "color", defaultValue: "#4287f5", property: "colour1" }, + { type: "color", defaultValue: "#4287f5", property: "colour2" }, + ], + Spiral1: [ + { type: "range", min: 1, max: 50, defaultValue: 20, property: "sides" }, + { type: "range", min: 1, max: 600, defaultValue: 240, property: "width" }, + { type: "color", defaultValue: "#4287f5", property: "colour" }, + ], + FloralAccident: [ + { type: "range", min: 1, max: 50, defaultValue: 20, property: "sides" }, + { type: "range", min: 1, max: 600, defaultValue: 240, property: "width" }, + { type: "color", defaultValue: "#4287f5", property: "colour" }, + ], + FloralPhyllo_Accident: [ + { type: "range", min: 1, max: 50, defaultValue: 20, property: "sides" }, + { type: "range", min: 1, max: 600, defaultValue: 240, property: "width" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + { type: "color", defaultValue: "#FC0362", property: "colour2" }, + ], + Nodal_expanding: [ + { type: "range", min: 1, max: 100, defaultValue: 5, property: "expand" }, + { type: "range", min: 1, max: 100000, defaultValue: 100000, property: "points" }, + { type: "range", min: 1, max: 10, defaultValue: 3, property: "line_width" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + { type: "color", defaultValue: "#FC0362", property: "colour2" }, + { type: "range", min: 0, max: 10, defaultValue: 5, property: "colour_change" }, + ], + Nodal: [ + { type: "range", min: 1, max: 1000, defaultValue: 400, property: "width" }, + { type: "range", min: 1, max: 20, defaultValue: 10, property: "points" }, + { type: "range", min: 1, max: 10, defaultValue: 3, property: "line_width" }, + { type: "range", min: 1, max: 20, defaultValue: 1, property: "step" }, + { type: "color", defaultValue: "#2D81FC", property: "colour" }, + ], + Phyllotaxis: [ + { type: "range", min: 1, max: 40, defaultValue: 24, property: "width" }, + { type: "range", min: 1, max: 1000, defaultValue: 300, property: "nMax" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + { type: "color", defaultValue: "#FC0362", property: "colour2" }, + ], + SquareTwist_angle: [ + { type: "range", min: 1, max: 800, defaultValue: 400, property: "width" }, + { type: "range", min: 1, max: 10, defaultValue: 1, property: "line_width" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + ], + rectangle_pattern1: [ + { type: "range", min: 1, max: 800, defaultValue: 400, property: "width" }, + { type: "range", min: 1, max: 100, defaultValue: 10, property: "squares" }, + { type: "range", min: 1, max: 10, defaultValue: 1, property: "line_width" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + ], + EyePrototype: [ + { type: "range", min: 1, max: 800, defaultValue: 400, property: "width" }, + { type: "range", min: 1, max: 100, defaultValue: 10, property: "squares" }, + { type: "range", min: 1, max: 10, defaultValue: 1, property: "line_width" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + ], + }; + return config[className]; +} + +function addControl(item, instance) { + // console.log(item); + let parentDiv = document.getElementById("custom"); + + let title = document.createElement("p"); + title.innerText = item.property + ": " + item.defaultValue; + title.id = "elText" + item.property; + + let control = document.createElement("input"); + control.type = item.type; + + if (item.type === "range") { + control.min = item.min; + control.max = item.max; + } + + control.value = item.defaultValue; + control.className = "control"; + control.id = "el" + item.property; + + const listener = (event) => { + const newValue = event.target.value; + instance[item.property] = + item.type === "range" ? parseInt(newValue, 10) : newValue; + + title.innerText = item.property + ": " + newValue; + }; + + control.addEventListener("input", listener); + + parentDiv.appendChild(title); + parentDiv.appendChild(control); + + return { element: control, listener }; +} + +function drawEyelid(width, x1, y1, colour) { + x1 -= centerX; + y1 -= centerY; + + const angle = Math.atan2(y1, x1); + const cosAngle = Math.cos(angle); + const sinAngle = Math.sin(angle); + + const x2 = cosAngle * width; + const y2 = sinAngle * width; + + const x3Old = width / 2; + const y3Old = width / 2; + const x4Old = width / 2; + const y4Old = -width / 2; + + const x3 = x3Old * cosAngle - y3Old * sinAngle; + const y3 = x3Old * sinAngle + y3Old * cosAngle; + const x4 = x4Old * cosAngle - y4Old * sinAngle; + const y4 = x4Old * sinAngle + y4Old * cosAngle; + + x1 += centerX; + y1 += centerY; + const x2Final = x2 + x1; + const y2Final = y2 + y1; + const x3Final = x3 + x1; + const y3Final = y3 + y1; + const x4Final = x4 + x1; + const y4Final = y4 + y1; + + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.quadraticCurveTo(x3Final, y3Final, x2Final, y2Final); + + ctx.moveTo(x1, y1); + ctx.quadraticCurveTo(x4Final, y4Final, x2Final, y2Final); + ctx.fillStyle = colour; + ctx.fill(); + + ctx.lineWidth = 2; + ctx.strokeStyle = "black"; + ctx.stroke(); +} + +function drawEyelidAccident(x1, y1) { + let leafWidth = 120; + let leafHeight = 60; + x1 -= centerX; + y1 -= centerY; + let angle = Math.atan(y1 / x1); + // if(angle >=Math.PI){ + // angle -=Math.PI + // console.log("greater called") + // } + angle = Math.abs(angle); + let x2Old = 0 + leafWidth; + let y2Old = 0; + + let x3Old = 0 + leafWidth / 2; + let y3Old = 0 + leafHeight / 2; + + let x4Old = 0 + leafWidth / 2; + let y4Old = 0 - leafHeight / 2; + + let x2 = x2Old * Math.cos(angle) - y2Old * Math.sin(angle); + let y2 = x2Old * Math.sin(angle) + y2Old * Math.cos(angle); + + let x3 = x3Old * Math.cos(angle) - y3Old * Math.sin(angle); + let y3 = x3Old * Math.sin(angle) + y3Old * Math.cos(angle); + + let x4 = x4Old * Math.cos(angle) - y4Old * Math.sin(angle); + let y4 = x4Old * Math.sin(angle) + y4Old * Math.cos(angle); + + let oldx1 = x1; + let oldy1 = y1; + + x1 += centerX; // +x2/2 + y1 += centerY; // +x2/2 + x2 += x1; + y2 += y1; + x3 += x1; + y3 += y1; + x4 += x1; + y4 += y1; + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.quadraticCurveTo(x3, y3, x2, y2); + + ctx.moveTo(x1, y1); + ctx.quadraticCurveTo(x4, y4, x2, y2); + ctx.fillStyle = "black"; + ctx.fill(); + + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.quadraticCurveTo(x3, y3, x2, y2); + + ctx.moveTo(x1, y1); + ctx.quadraticCurveTo(x4, y4, x2, y2); + ctx.strokeStyle = "orange"; + ctx.stroke(); +} + +function DrawPolygon(sides, width, rotation, colour) { + ctx.beginPath(); + ctx.moveTo( + centerX + width * Math.cos((rotation * Math.PI) / 180), + centerY + width * Math.sin((rotation * Math.PI) / 180) + ); + + for (var i = 1; i <= sides; i += 1) { + ctx.lineTo( + centerX + + width * + Math.cos((i * 2 * Math.PI) / sides + (rotation * Math.PI) / 180), + centerY + + width * Math.sin((i * 2 * Math.PI) / sides + (rotation * Math.PI) / 180) + ); + } + ctx.strokeStyle = colour; + ctx.lineWidth = 3; + ctx.stroke(); +} + +function rad(degrees) { + return (degrees * Math.PI) / 180; +} + +function colourToText(colour) { + return "rgb(" + colour[0] + "," + colour[1] + "," + colour[2] + ")"; +} + +function LerpHex(a, b, amount) { + var ah = parseInt(a.replace(/#/g, ""), 16), + ar = ah >> 16, + ag = (ah >> 8) & 0xff, + ab = ah & 0xff, + bh = parseInt(b.replace(/#/g, ""), 16), + br = bh >> 16, + bg = (bh >> 8) & 0xff, + bb = bh & 0xff, + rr = ar + amount * (br - ar), + rg = ag + amount * (bg - ag), + rb = ab + amount * (bb - ab); + + return ( + "#" + (((1 << 24) + (rr << 16) + (rg << 8) + rb) | 0).toString(16).slice(1) + ); +} + +function LerpRGB(a, b, t) { + if (t < 0) { + t *= -1; + } + var newColor = [0, 0, 0]; + newColor[0] = a[0] + (b[0] - a[0]) * t; + newColor[1] = a[1] + (b[1] - a[1]) * t; + newColor[2] = a[2] + (b[2] - a[2]) * t; + return newColor; +} + +function render_clear() { + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + ctx.fillStyle = "black"; + ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); +} + +function render_clear() { + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + ctx.fillStyle = "black"; + ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); +} diff --git a/rfid/js/index.js b/rfid/js/index.js new file mode 100644 index 0000000..8138057 --- /dev/null +++ b/rfid/js/index.js @@ -0,0 +1,319 @@ +//jshint esversion:8 +var seed = cyrb128("813311281"); +var rand = sfc32(seed[0], seed[1], seed[2], seed[3]); + +var gateway = `ws://192.168.20.16/ws`; +var websocket; +window.addEventListener('load', onLoad); +function initWebSocket() { + console.log('Trying to open a WebSocket connection...'); + websocket = new WebSocket(gateway); + websocket.onopen = onOpen; + websocket.onclose = onClose; + websocket.onmessage = onMessage; // <-- add this line +} +function onOpen(event) { + console.log('Connection opened'); +} +function onClose(event) { + console.log('Connection closed'); + setTimeout(initWebSocket, 2000); +} +function onMessage(event) { + console.log(event.data) + console.log("--") + setSeed(event.data) + Reset() + updateDrawObj() + // TogglePause() +} + +function onLoad(event) { + initWebSocket(); +} + +function setSeed(val){ + seed = cyrb128(val+"1"); + rand = sfc32(seed[0], seed[1], seed[2], seed[3]); +} + +let c = document.getElementById("myCanvas"); +let ctx = c.getContext("2d"); +ctx.canvas.width = window.innerWidth; +ctx.canvas.height = window.innerHeight; +centerX = ctx.canvas.width / 2; +centerY = ctx.canvas.height / 2; + + +let deg_per_sec = 5; +let targetFps = 60; +let frameDuration = 1000 / targetFps; + +let rotation = 0; //was = j = angle +let paused = true; +render_clear(); + +let drawObj = null; +const classMap = { + PolyTwistColourWidth: PolyTwistColourWidth, + FloralPhyllo: FloralPhyllo, + Spiral1: Spiral1, + FloralAccident: FloralAccident, + FloralPhyllo_Accident: FloralPhyllo_Accident, + Nodal_expanding: Nodal_expanding, + Nodal: Nodal, + Phyllotaxis: Phyllotaxis, + SquareTwist_angle: SquareTwist_angle, + rectangle_pattern1: rectangle_pattern1, + EyePrototype: EyePrototype, + // Add more class constructors here as needed +}; +function createInstance(className, args) { + + if (classMap.hasOwnProperty(className)) { + return new classMap[className](...args); + } else { + throw new Error(`Unknown class name: ${className}`); + } +} + + + +function cyrb128(str) { + let h1 = 1779033703, h2 = 3144134277, + h3 = 1013904242, h4 = 2773480762; + for (let i = 0, k; i < str.length; i++) { + k = str.charCodeAt(i); + h1 = h2 ^ Math.imul(h1 ^ k, 597399067); + h2 = h3 ^ Math.imul(h2 ^ k, 2869860233); + h3 = h4 ^ Math.imul(h3 ^ k, 951274213); + h4 = h1 ^ Math.imul(h4 ^ k, 2716044179); + } + h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067); + h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233); + h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213); + h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179); + return [(h1 ^ h2 ^ h3 ^ h4) >>> 0, (h2 ^ h1) >>> 0, (h3 ^ h1) >>> 0, (h4 ^ h1) >>> 0]; +} +function sfc32(a, b, c, d) { + return function () { + a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0; + var t = (a + b) | 0; + a = b ^ b >>> 9; + b = c + (c << 3) | 0; + c = (c << 21 | c >>> 11); + d = d + 1 | 0; + t = t + d | 0; + c = c + t | 0; + return (t >>> 0) / 4294967296; + } +} + +function PRNGinRange(min = 0, max = 100) { + // find diff + let difference = max - min; + // generate random number + let randTmp = rand(); + // multiply with difference + randTmp = Math.floor(randTmp * difference); + // add with min value + randTmp = randTmp + min; + return randTmp; +} + +async function createShapeWithRandomProperties(inputNumber, shapeConfig) { + + // const shapeName = Object.keys(shapeConfig)[PRNGinRange(0, Object.keys(shapeConfig).length - 1)]; + const shapeName = Object.keys(shapeConfig)[PRNGinRange(0, Object.keys(shapeConfig).length - 1)]; + const ShapeClass = classMap[shapeName]; + const config = await fetchConfig(shapeName); + const properties = {}; + console.log(config) + + config.forEach((item, index) => { + const min = item.min || 0; + const max = item.max || 1; + const randomValue = PRNGinRange(min, max); + // console.log(PRNGinRange(1, 100)) + properties[item.property] = item.type === "color" ? "#4287f5" : Math.round(randomValue); + }); + + return new ShapeClass(...Object.values(properties)); +} + +async function updateDrawObj() { + const shapeSelector = document.getElementById("shape-selector"); + const selectedShape = shapeSelector.value; + const configControls = await fetchConfig(selectedShape); + if (drawObj) { + drawObj.remove(); // Remove the previous instance + } + // Extract default values from the configuration + const defaultValues = configControls + // .filter((item) => item.type !== "color") // Exclude color inputs + .map((item) => item.defaultValue); + + + // drawObj = createInstance(selectedShape, defaultValues); + drawObj = await createShapeWithRandomProperties(813311281, config1); + console.log(drawObj) + drawObj.initialise(configControls); +} + +updateDrawObj(); +const config1 = { + PolyTwistColourWidth: [ + { type: "range", min: 3, max: 10, defaultValue: 5, property: "sides" }, + { type: "range", min: 1, max: 600, defaultValue: 400, property: "width" }, + { type: "range", min: 1, max: 100, defaultValue: 50, property: "depth" }, + { + type: "range", + min: -180, + max: 180, + defaultValue: -90, + property: "rotation", + }, + { type: "color", defaultValue: "#4287f5", property: "colour1" }, + { type: "color", defaultValue: "#42f57b", property: "colour2" }, + ], + FloralPhyllo: [ + { type: "range", min: 1, max: 600, defaultValue: 300, property: "width" }, + { type: "range", min: 1, max: 100, defaultValue: 50, property: "depth" }, + { type: "color", defaultValue: "#4287f5", property: "colour1" }, + { type: "color", defaultValue: "#4287f5", property: "colour2" }, + ], + Spiral1: [ + { type: "range", min: 1, max: 50, defaultValue: 20, property: "sides" }, + { type: "range", min: 1, max: 600, defaultValue: 240, property: "width" }, + { type: "color", defaultValue: "#4287f5", property: "colour" }, + ], + FloralAccident: [ + { type: "range", min: 1, max: 50, defaultValue: 20, property: "sides" }, + { type: "range", min: 1, max: 600, defaultValue: 240, property: "width" }, + { type: "color", defaultValue: "#4287f5", property: "colour" }, + ], + FloralPhyllo_Accident: [ + { type: "range", min: 1, max: 50, defaultValue: 20, property: "sides" }, + { type: "range", min: 1, max: 600, defaultValue: 240, property: "width" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + { type: "color", defaultValue: "#FC0362", property: "colour2" }, + ], + Nodal_expanding: [ + { type: "range", min: 1, max: 100, defaultValue: 5, property: "expand" }, + { type: "range", min: 1, max: 100000, defaultValue: 100000, property: "points" }, + { type: "range", min: 1, max: 10, defaultValue: 3, property: "line_width" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + { type: "color", defaultValue: "#FC0362", property: "colour2" }, + { type: "range", min: 0, max: 10, defaultValue: 5, property: "colour_change" }, + ], + Nodal: [ + { type: "range", min: 1, max: 1000, defaultValue: 400, property: "width" }, + { type: "range", min: 1, max: 20, defaultValue: 10, property: "points" }, + { type: "range", min: 1, max: 10, defaultValue: 3, property: "line_width" }, + { type: "range", min: 1, max: 20, defaultValue: 1, property: "step" }, + { type: "color", defaultValue: "#2D81FC", property: "colour" }, + ], + Phyllotaxis: [ + { type: "range", min: 1, max: 40, defaultValue: 24, property: "width" }, + { type: "range", min: 1, max: 1000, defaultValue: 300, property: "nMax" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + { type: "color", defaultValue: "#FC0362", property: "colour2" }, + ], + SquareTwist_angle: [ + { type: "range", min: 1, max: 800, defaultValue: 400, property: "width" }, + { type: "range", min: 1, max: 10, defaultValue: 1, property: "line_width" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + ], + rectangle_pattern1: [ + { type: "range", min: 1, max: 800, defaultValue: 400, property: "width" }, + { type: "range", min: 1, max: 100, defaultValue: 10, property: "squares" }, + { type: "range", min: 1, max: 10, defaultValue: 1, property: "line_width" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + ], + EyePrototype: [ + { type: "range", min: 1, max: 800, defaultValue: 400, property: "width" }, + { type: "range", min: 1, max: 100, defaultValue: 10, property: "squares" }, + { type: "range", min: 1, max: 10, defaultValue: 1, property: "line_width" }, + { type: "color", defaultValue: "#2D81FC", property: "colour1" }, + ], +}; +function render() { + setTimeout(() => { + requestAnimationFrame(() => { + render_clear(); + if (drawObj) { + drawObj.draw(rotation); + } + + if (!paused) { + rotation += deg_per_sec / targetFps; + } + }); + + render(); + }, frameDuration); +} + +document + .getElementById("shape-selector") + .addEventListener("change", updateDrawObj); + +let toolbarShowing = true; +document.addEventListener("keydown", toggleSettings); + +function manualToggleSettings() { + console.log("hi") + toolbarShowing = !toolbarShowing; + let tb = document.getElementById("toolbar"); + if (toolbarShowing) { + tb.style.display = "flex"; + } else { + tb.style.display = "none"; + } +} + +function toggleSettings(e) { + if (e.key == "p") { + toolbarShowing = !toolbarShowing; + } + if (e.code === "Space") { + paused = !paused; + } + + let tb = document.getElementById("toolbar"); + if (toolbarShowing) { + tb.style.display = "flex"; + } else { + tb.style.display = "none"; + } +} + +function TogglePause() { + let pb = document.getElementById("pauseButton"); + paused = !paused; + + if (paused) { + pb.textContent = "Play"; + } else { + pb.textContent = "Pause"; + } +} +function Reset() { + rotation = 0; //was = j = angle + currentFrame = 0; +} + +function ForwardFrame() { + rotation += deg_per_sec / fps; // was = j = innerRotation, now = rotation + currentFrame += 1; // was = i +} +function BackwardFrame() { + rotation -= deg_per_sec / fps; // was = j = innerRotation, now = rotation + currentFrame -= 1; // was = i +} + +function ChangeDegPerSec(newValue) { + deg_per_sec = newValue; +} + +window.onload = render; diff --git a/rfid/js/math.js b/rfid/js/math.js new file mode 100644 index 0000000..f9eeea3 --- /dev/null +++ b/rfid/js/math.js @@ -0,0 +1,77 @@ +function rotateMatrix2d(p, angle) { + // cos0 sin0 + // -sin0 cos0 + const angleD = rad(angle); + const r = [ + [Math.cos(angleD), Math.sin(angleD)], + [-Math.sin(angleD), Math.cos(angleD)], + ]; + const newPoint = [ + p[0] * r[0][0] + p[1] * r[0][1], + p[0] * r[1][0] + p[1] * r[1][1], + ]; + return newPoint; +} + +function rotateMatrix3dX(p, angle) { + // cos0 sin0 + // -sin0 cos0 + const angleD = rad(angle); + const r = [ + [1, 0, 0], + [0, Math.cos(angleD), -Math.sin(angleD)], + [0, Math.sin(angleD), Math.cos(angleD)], + ]; + const newPoint = [ + p[0] * r[0][0] + p[1] * r[0][1] + p[2] * r[0][2], + p[0] * r[1][0] + p[1] * r[1][1] + p[2] * r[1][2], + p[0] * r[2][0] + p[1] * r[2][1] + p[2] * r[2][2], + ]; + return newPoint; +} + +function rotateMatrix3dY(p, angle) { + // cos0 sin0 + // -sin0 cos0 + const angleD = rad(angle); + const r = [ + [Math.cos(angleD), 0, Math.sin(angleD)], + [0, 1, 0], + [-Math.sin(angleD), 0, Math.cos(angleD)], + ]; + const newPoint = [ + p[0] * r[0][0] + p[1] * r[0][1] + p[2] * r[0][2], + p[0] * r[1][0] + p[1] * r[1][1] + p[2] * r[1][2], + p[0] * r[2][0] + p[1] * r[2][1] + p[2] * r[2][2], + ]; + return newPoint; +} +function rotateMatrix3dZ(p, angle) { + // cos0 sin0 + // -sin0 cos0 + const angleD = rad(angle); + const r = [ + [Math.cos(angleD), -Math.sin(angleD), 0], + [Math.sin(angleD), Math.cos(angleD), 0], + [0, 0, 1], + ]; + const newPoint = [ + p[0] * r[0][0] + p[1] * r[0][1] + p[2] * r[0][2], + p[0] * r[1][0] + p[1] * r[1][1] + p[2] * r[1][2], + p[0] * r[2][0] + p[1] * r[2][1] + p[2] * r[2][2], + ]; + return newPoint; +} + +function projectionOrth(v) { + const p = [ + [1, 0, 0], + [0, 1, 0], + ]; + + const nPoint = [ + p[0][0] * v[0] + p[0][1] * v[1] + p[0][2] * v[2], + p[1][0] * v[0] + p[1][1] * v[1] + p[1][2] * v[2], + ]; + return nPoint; +} diff --git a/rfid/js/objects.js b/rfid/js/objects.js new file mode 100644 index 0000000..e070318 --- /dev/null +++ b/rfid/js/objects.js @@ -0,0 +1,449 @@ +class BaseShape { + constructor() { + this.controls = []; // Keep track of created elements and event listeners + } + + initialise(config) { + for (let item of config) { + const { element, listener } = addControl(item, this); + this.controls.push({ element, listener }); + } + } + + remove() { + this.controls.forEach(({ element, listener }) => { + if (element && listener) { + element.removeEventListener("input", listener); + } + if (element && element.parentElement) { + element.parentElement.removeChild(element); + const titleElement = document.getElementById("elText" + element.id.slice(2)); + titleElement.parentElement.removeChild(titleElement); + } + }); + this.controls = []; + } + + draw() { + throw new Error("Draw function not implemented"); + } +} + +class PolyTwistColourWidth extends BaseShape { + constructor(sides, width, depth, rotation, colour1, colour2) { + super(); + this.sides = sides; + this.width = width; + this.depth = depth; + this.rotation = rotation; + this.colour1 = colour1; + this.colour2 = colour2; + } + + draw(innerRotation) { + let out_angle = 0; + const innerAngle = 180 - ((this.sides - 2) * 180) / this.sides; + const scopeAngle = innerRotation - (innerAngle * Math.floor(innerRotation / innerAngle)); + + if (scopeAngle < innerAngle / 2) { + out_angle = innerAngle / (2 * Math.cos((2 * Math.PI * scopeAngle) / (3 * innerAngle))) - innerAngle / 2; + } else { + out_angle = -innerAngle / (2 * Math.cos(((2 * Math.PI) / 3) - ((2 * Math.PI * scopeAngle) / (3 * innerAngle)))) + (innerAngle * 3) / 2; + } + let minWidth = Math.sin(rad(innerAngle / 2)) * (0.5 / Math.tan(rad(innerAngle / 2))) * 2; + + let widthMultiplier = minWidth / Math.sin(Math.PI / 180 * (90 + innerAngle / 2 - out_angle + innerAngle * Math.floor(out_angle / innerAngle))); + + for (let i = 0; i < this.depth; i++) { + const fraction = i / this.depth; + const ncolour = LerpHex(this.colour1, this.colour2, fraction); + DrawPolygon(this.sides, this.width * widthMultiplier ** i, out_angle * i + this.rotation, ncolour); + } + } +} +class FloralPhyllo extends BaseShape { + constructor(width, depth, colour1, colour2) { + super(); + this.width = width; + this.depth = depth; + this.colour1 = colour1; + this.colour2 = colour2; + } + + draw(angle) { + // var c = 24; //something to do with width. but not width + var c = 1; //something to do with width. but not width + //dont make larger than 270 unless altering the number of colours in lerpedColours + for (let n = 200; n > 0; n -= 1) { + const a = n * angle / 1000; //137.5; + const r = c * Math.sqrt(n); + const x = r * Math.cos(a) + centerX; + const y = r * Math.sin(a) + centerY; + + drawEyelid(n * 2.4 + 40, x, y, this.colour1); + } + } +} +class Spiral1 extends BaseShape { + constructor(sides, width, colour) { + super(); + this.sides = sides; + this.width = width; + this.colour = colour; + } + + draw(rotation) { + var rot = Math.round((this.sides - 2) * 180 / this.sides * 2) + var piv = 360 / this.sides; + var stt = 0.5 * Math.PI - rad(rot) //+ rad(rotation); + var end = 0; + var n = this.width / ((this.width / 10) * (this.width / 10)) //pixel correction for mid leaf + + for (let i = 1; i < this.sides + 1; i++) { + end = stt + rad(rot); + + ctx.beginPath(); + ctx.arc(centerX + Math.cos(rad(90 + piv * i + rotation)) * this.width, centerY + Math.sin(rad(90 + piv * i + rotation)) * this.width, this.width, stt + rad(rotation) - (stt - end) / 2, end + rad(rotation) + rad(n), 0); + ctx.strokeStyle = this.colour; + ctx.stroke(); + + + ctx.beginPath(); + ctx.arc(centerX + Math.cos(rad(90 + piv * i - rotation)) * this.width, centerY + Math.sin(rad(90 + piv * i - rotation)) * this.width, this.width, stt - rad(rotation), end - (end - stt) / 2 + rad(n) - rad(rotation), 0); + ctx.strokeStyle = this.colour; + ctx.stroke(); + + + stt = end + -(rad(rot - piv)) //+rad(30); + } + + } +} + +class FloralAccident extends BaseShape { + constructor(sides, width, colour) { + super(); + this.sides = sides; + this.width = width; + this.colour = colour; + } + + draw(rotation) { + var rot = Math.round((this.sides - 2) * 180 / this.sides * 2) + var piv = 360 / this.sides; + var stt = 0.5 * Math.PI - rad(rot) //+ rad(rotation); + var end = 0; + var n = this.width / ((this.width / 10) * (this.width / 10)) //pixel correction for mid leaf + + for (let i = 1; i < this.sides + 1; i++) { + end = stt + rad(rot); + + ctx.beginPath(); + ctx.arc(centerX + Math.cos(rad(90 + piv * i + rotation)) * this.width, centerY + Math.sin(rad(90 + piv * i + rotation)) * this.width, this.width, stt - (stt - end + rad(rotation)) / 2, end + rad(n), 0); + ctx.strokeStyle = this.colour; + ctx.stroke(); + + + ctx.beginPath(); + ctx.arc(centerX + Math.cos(rad(90 + piv * i - rotation)) * this.width, centerY + Math.sin(rad(90 + piv * i - rotation)) * this.width, this.width, stt, end - (end - stt - rad(rotation)) / 2 + rad(n), 0); + ctx.strokeStyle = this.colour; + ctx.stroke(); + + + stt = end + -(rad(rot - piv)) //+rad(30); + } + + } +} +class FloralPhyllo_Accident extends BaseShape { + constructor(sides, width, colour1, colour2) { + super(); + this.sides = sides; + this.width = width; + this.colour1 = colour1; + this.colour2 = colour2; + } + + draw(angle) { + + var c = 24; //something to do with width. but not width + + for (let n = 0; n < 300; n += 1) { + let ncolour = LerpHex(this.colour1, this.colour2, Math.cos(rad(n / 2))); + let a = n * (angle / 1000 + 100); //137.5; + let r = c * Math.sqrt(n); + let x = r * Math.cos(a) + centerX; + let y = r * Math.sin(a) + centerY; + + drawEyelidAccident(x, y); + + } + } +} +class Nodal_expanding extends BaseShape { + constructor(expand, points, line_width, colour1, colour2, colour_change) { + super(); + this.expand = expand; + this.points = points; + this.line_width = line_width; + this.colour1 = colour1; + this.colour2 = colour2; + this.colour_change = colour_change + } + + draw(step) { + let colour_change = this.colour_change / 10 + var angle = 360 / this.points * step + + var start_angle = angle; + var done = false; + var total_moves = 1; + var length = this.expand; + + for (let z = 1; z <= 100; z++) { //why specifically 2500 + ctx.beginPath(); + let ncolour = LerpHex(this.colour1, this.colour2, Math.cos(rad(z * colour_change))); + + ctx.moveTo(centerX + (Math.cos(rad(angle * (z - 1) + 0)) * (length - this.expand)), centerY + (Math.sin(rad(angle * (z - 1) + 0)) * (length - this.expand))); + ctx.lineTo(centerX + (Math.cos(rad(angle * z + 0)) * length), centerY + (Math.sin(rad(angle * z + 0)) * length)); + length += this.expand; + ctx.lineWidth = this.line_width;//try 1 + ctx.strokeStyle = ncolour; + // ctx.strokeStyle = colourToText(ncolour); + console.log(ncolour) + ctx.stroke(); + } + + + } +} +class Nodal extends BaseShape { + constructor(width, points, line_width, step, colour) { + super(); + this.width = width; + this.points = points; + this.line_width = line_width; + this.step = step; + this.colour = colour; + } + // Draw_nodal(300, 100, 31, rotation, "blue"); + draw(rotate) { + // console.log(rotate) + var angle = 360 / this.points * this.step + ctx.beginPath(); + var start_angle = angle; + var done = false; + var total_moves = 1; + ctx.moveTo(centerX + (Math.cos(rad(angle + rotate)) * this.width), centerY + (Math.sin(rad(angle + rotate)) * this.width)); + + while (done != true) { + if ((total_moves * this.step) % this.points != 0) { + total_moves++ + } + else { + total_moves++ + done = true + } + } + for (let z = 1; z <= total_moves; z++) { + ctx.lineTo(centerX + (Math.cos(rad(angle * z + rotate)) * this.width), centerY + (Math.sin(rad(angle * z + rotate)) * this.width)); + } + ctx.lineWidth = this.line_width;//try 1 + ctx.strokeStyle = this.colour; + ctx.stroke(); + + } +} +class Phyllotaxis extends BaseShape { + constructor(width, nMax, colour1, colour2) { + super(); + this.width = width; + this.nMax = nMax; + this.colour1 = colour1; + this.colour2 = colour2; + } + // Draw_nodal(300, 100, 31, rotation, "blue"); + draw(angle) { + + for (let n = 0; n < this.nMax; n += 1) { + const ncolour = LerpHex(this.colour1, this.colour2, n / this.nMax); + // const ncolour = LerpHex(this.colour1, this.colour2, (n/this.nMax)**2); + const a = n * (angle / 1000)//137.5; + const r = this.width * Math.sqrt(n); + const x = r * Math.cos(a) + centerX; + const y = r * Math.sin(a) + centerY; + + ctx.beginPath(); + ctx.arc(x, y, 8, 0, 2 * Math.PI); + ctx.fillStyle = ncolour; + // ctx.fillStyle = colourToText(ncolour); + ctx.fill(); + // console.log(this.c) + } + + } +} +class SquareTwist_angle extends BaseShape { + constructor(width, line_width, colour1) { + super(); + this.width = width; + this.line_width = line_width; + this.colour1 = colour1; + } + drawSquare(angle, size, colour) { + ctx.save(); + ctx.translate(centerX, centerY)//-(Math.sin(rad(angle)) *centerX)); + ctx.rotate(rad(angle + 180)); + ctx.beginPath(); + ctx.strokeStyle = colour; + ctx.lineWidth = this.line_width; + ctx.rect(-size / 2, -size / 2, size, size); + ctx.stroke(); + ctx.restore(); + } + // DrawSquareTwist_angle(400,0,rotation,"red") + draw(innerRotation) { + let out_angle = innerRotation; + let widthMultiplier = 1 / (2 * Math.sin(Math.PI / 180 * (130 - out_angle + 90 * Math.floor(out_angle / 90)))) + 0.5 + + for (let i = 0; i < 25; i++) { + this.drawSquare(innerRotation * i, this.width * widthMultiplier ** i, this.colour1) + } + + } +} +class rectangle_pattern1 extends BaseShape { + constructor(width, squares, line_width, colour1) { + super(); + this.width = width; + this.squares = squares; + this.line_width = line_width; + this.colour1 = colour1; + } + drawSquare(angle, size, colour) { + ctx.save(); + ctx.translate(centerX, centerY)//-(Math.sin(rad(angle)) *centerX)); + ctx.rotate(rad(angle + 180)); + ctx.beginPath(); + ctx.strokeStyle = colour; + ctx.lineWidth = this.line_width; + ctx.rect(-size / 2, -size / 2, size, size); + ctx.stroke(); + ctx.restore(); + } + // Draw_rectangle_pattern1(rotation, squares, 200, "blue"); + draw(rotation) { + for (let z = 0; z < 360; z += 360 / this.squares) { + this.drawSquare(z + rotation, this.width, this.colour1); + } + } +} +class EyePrototype extends BaseShape { + constructor(width, line_width, colour1) { + super(); + this.width = width; + this.line_width = line_width; + this.colour1 = colour1; + this.step = 0; + this.speed = 8; + this.opening = true; + this.counter = 0; + this.points = [ + [50, 250], + [450, 250], + ]; + this.cooldown = 0; + } + drawEyelid(step) { + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.moveTo(this.points[0][0], this.points[0][1]); + ctx.quadraticCurveTo(250, 250 - step, this.points[1][0], this.points[0][1]); + + ctx.moveTo(this.points[0][0], this.points[0][1]); + ctx.quadraticCurveTo(250, 250 + step, this.points[1][0], this.points[0][1]); + ctx.stroke(); + } + eyelidCut(step) { + // ctx.lineWidth = 1; + let squarePath = new Path2D(); + squarePath.moveTo(this.points[0][0], this.points[0][1]); + squarePath.quadraticCurveTo(250, 250 - step, this.points[1][0], this.points[0][1]); + + squarePath.moveTo(this.points[0][0], this.points[0][1]); + squarePath.quadraticCurveTo(250, 250 + step, this.points[1][0], this.points[0][1]); + + ctx.clip(squarePath); + } + drawGrowEye(step) { + console.log(step) + ctx.strokeStyle = "aqua"; + ctx.beginPath(); + ctx.lineWidth = 5; + ctx.arc(250, 250, step, 0, 2 * Math.PI); + ctx.stroke(); + ctx.strokeStyle = "orange"; + } + drawCircle(step) { + ctx.beginPath(); + ctx.lineWidth = 5; + ctx.arc(250, 250, step, 0, 2 * Math.PI); + ctx.stroke(); + } + stepFunc() { + if (this.cooldown != 0) { + this.cooldown--; + } else { + if (this.opening == true) { + if (this.step >= 200) { + this.cooldown = 200; + this.opening = false; + this.step -= this.speed; + } else { + this.step += this.speed; + } + } else { + if (this.step <= 0) { + this.opening = true; + this.step += this.speed; + } else { + this.step -= this.speed; + } + } + } + } + + draw(rotation) { + console.log(this.counter) + ctx.strokeStyle = "orange"; + ctx.fillStyle = "black"; + // ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + // ctx.fillRect(0, 0, 500, 500); + + // let newPath = new Path2D(); + // newPath.arc(150, 75, 75, 0, 2 * Math.PI); + + ctx.beginPath(); + ctx.rect(100, 100, 300, 300); + ctx.stroke(); + + this.drawEyelid(this.step); + + ctx.save(); + // squareCut(); + this.eyelidCut(this.step); + + if (this.counter % 100 == 0) { + this.counter = 0; + } + this.drawGrowEye(100 + this.counter); + + this.drawCircle(100); + + ctx.restore(); + + this.stepFunc(); + this.counter++; + } +} + diff --git a/webGl/first test/index.html b/webGl/first test/index.html new file mode 100644 index 0000000..05518d8 --- /dev/null +++ b/webGl/first test/index.html @@ -0,0 +1,21 @@ + + + + + + WebGL Centered Square + + + + + + + \ No newline at end of file diff --git a/webGl/first test/main.js b/webGl/first test/main.js new file mode 100644 index 0000000..04eaaf7 --- /dev/null +++ b/webGl/first test/main.js @@ -0,0 +1,98 @@ +const canvas = document.getElementById('canvas'); +const gl = canvas.getContext('webgl'); + +if (!gl) { + alert('WebGL is not supported in your browser.'); +} + +function resizeCanvas() { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + gl.viewport(0, 0, canvas.width, canvas.height); +} + +window.addEventListener('resize', resizeCanvas); +resizeCanvas(); + +const vertices = [ + -0.5, -0.5, + 0.5, -0.5, + 0.5, 0.5, + -0.5, 0.5, +]; + +const vertexBuffer = gl.createBuffer(); +gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); +gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); + +const vertexShaderSource = ` + attribute vec2 a_position; + + uniform vec2 u_resolution; + uniform vec2 u_translation; + uniform vec2 u_scale; + + void main() { + vec2 scaledPosition = a_position * u_scale; + vec2 position = scaledPosition + u_translation; + + vec2 zeroToOne = position / u_resolution; + vec2 zeroToTwo = zeroToOne * 2.0; + vec2 clipSpace = zeroToTwo - 1.0; + + gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); + } +`; + +const vertexShader = gl.createShader(gl.VERTEX_SHADER); +gl.shaderSource(vertexShader, vertexShaderSource); +gl.compileShader(vertexShader); + +const fragmentShaderSource = ` + precision mediump float; + + void main() { + gl_FragColor = vec4(1, 0, 0, 1); + } +`; + +const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); +gl.shaderSource(fragmentShader, fragmentShaderSource); +gl.compileShader(fragmentShader); + +const program = gl.createProgram(); +gl.attachShader(program, vertexShader); +gl.attachShader(program, fragmentShader); +gl.linkProgram(program); +gl.useProgram(program); + +const positionAttributeLocation = gl.getAttribLocation(program, 'a_position'); +gl.enableVertexAttribArray(positionAttributeLocation); +gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); +gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0); + +const resolutionUniformLocation = gl.getUniformLocation(program, 'u_resolution'); +const translationUniformLocation = gl.getUniformLocation(program, 'u_translation'); +const scaleUniformLocation = gl.getUniformLocation(program, 'u_scale'); + +function drawScene() { + gl.clearColor(0, 0, 0, 1); + gl.clear(gl.COLOR_BUFFER_BIT); + + gl.uniform2f(resolutionUniformLocation, canvas.width, canvas.height); + + const squareWidth = 50; + const squareHeight = 50; + const xCenter = (canvas.width - squareWidth) / 2; + const yCenter = (canvas.height - squareHeight) / 2; + gl.uniform2f(translationUniformLocation, xCenter, yCenter); + + gl.uniform2f(scaleUniformLocation, squareWidth, squareHeight); + + gl.drawArrays(gl.TRIANGLE_FAN, 0, 4); + + requestAnimationFrame(drawScene); +} + +drawScene(); +