From 27a0e31cbd8da9c4ebd07535004d337a97acfad3 Mon Sep 17 00:00:00 2001 From: Benjamin Kraft Date: Mon, 27 Mar 2023 00:31:06 +0200 Subject: [PATCH] Init --- .gitignore | 2 + project.json | 6 + public/color_picker_styles.css | 88 ++++ public/index.html | 47 +++ public/scripts/attraction.js | 26 ++ public/scripts/ball.js | 69 +++ public/scripts/events.js | 42 ++ public/scripts/lib/benjo_library.js | 623 ++++++++++++++++++++++++++++ public/scripts/sketch.js | 120 ++++++ public/styles.css | 63 +++ public/thumbnail.png | Bin 0 -> 95254 bytes 11 files changed, 1086 insertions(+) create mode 100644 .gitignore create mode 100644 project.json create mode 100644 public/color_picker_styles.css create mode 100644 public/index.html create mode 100644 public/scripts/attraction.js create mode 100644 public/scripts/ball.js create mode 100644 public/scripts/events.js create mode 100644 public/scripts/lib/benjo_library.js create mode 100644 public/scripts/sketch.js create mode 100644 public/styles.css create mode 100644 public/thumbnail.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c6ef218 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea + diff --git a/project.json b/project.json new file mode 100644 index 0000000..9ccce6c --- /dev/null +++ b/project.json @@ -0,0 +1,6 @@ +{ + "display_name": "Physics", + "info_text": "A small physical interface for creating objects with interacting physical properties", + "visible": false, + "tags": ["Simulation", "Maths"] +} \ No newline at end of file diff --git a/public/color_picker_styles.css b/public/color_picker_styles.css new file mode 100644 index 0000000..a5b510e --- /dev/null +++ b/public/color_picker_styles.css @@ -0,0 +1,88 @@ +#color_picker{ + width: 300px; + height: 25%; + margin: 20px; + margin-top: 50px; + border: 5px solid #000; + background-color: #000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + position: relative; +} +#color_picker_numeric{ + width: 80%; + padding: 5%; + margin: 5%; + background-color: #888; + border-radius: 10px; + overflow: hidden; +} +.color_picker_rgb{ + float: left; + width: 22%; + height: 35px; + font-size: 25px; + color: #000; +} +.color_picker_rgb:nth-child(1){ + margin-right: 10%; + margin-left: 3%; + background-color: #F00; + +} +.color_picker_rgb:nth-child(2){ + background-color: #0F0; +} +.color_picker_rgb:nth-child(3){ + margin-left: 10%; + background-color: #00F; + color: #FFF; +} +#color_picker_hex{ + width: 50%; + height: 30px; + font-size: 25px; + margin: 10% 25% 0 25%; +} +#saturation{ + position: relative; + width: calc(100% - 33px); + height: 100%; + background: linear-gradient(to right, #FFF 0%, #F00 100%); + float: left; + margin-right: 6px; +} +#value { + width: 100%; + height: 100%; + background: linear-gradient(to top, #000 0%, rgba(255,255,255,0) 100%); +} +#sb_picker{ + border: 2px solid; + border-color: #FFF; + position: absolute; + width: 14px; + height: 14px; + border-radius: 10px; + bottom: 50px; + left: 50px; + box-sizing: border-box; + z-index: 10; +} +#hue { + width: 27px; + height: 100%; + position: relative; + float: left; + background: linear-gradient(to bottom, #F00 0%, #F0F 17%, #00F 34%, #0FF 50%, #0F0 67%, #FF0 84%, #F00 100%); +} +#hue_picker { + position: absolute; + background: #000; + border-bottom: 1px solid #000; + top: 0; + width: 27px; + height: 2px; +} \ No newline at end of file diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..6c79082 --- /dev/null +++ b/public/index.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + Physics + + +
+
+ + +
+ Radius in Pixeln: + +
+
+
+
+
+
+
+
+
+
+
+
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/public/scripts/attraction.js b/public/scripts/attraction.js new file mode 100644 index 0000000..11933e9 --- /dev/null +++ b/public/scripts/attraction.js @@ -0,0 +1,26 @@ +class Attraction{ + + constructor(x, y, r, c){ + this.r = r; + this.pos = createVector(x, y); + this.c = c; + } + + show(){ + noStroke(); + fill(this.c); + ellipse(this.pos.x, this.pos.y, this.r * 2); + } + + grabbed(){ + this.pos.x = mouseX + viewPort.x; + this.pos.y = mouseY + viewPort.y; + } + + checkGrab(){ + if (dist(this.pos.x, this.pos.y, mouseX + viewPort.x, mouseY + viewPort.y) < this.r && !this.isGrabbed){ + return true; + } + } + +} \ No newline at end of file diff --git a/public/scripts/ball.js b/public/scripts/ball.js new file mode 100644 index 0000000..875d474 --- /dev/null +++ b/public/scripts/ball.js @@ -0,0 +1,69 @@ +class Ball{ + + constructor(x, y, r, c){ + this.maxAcc = 0.5; + this.r = r; + this.pos = createVector(x, y); + this.vel = createVector(0, 0); + this.acc = createVector(0, 0); + this.c = c; + } + + attracted(){ + let att = createVector(0, 0), G = 50, g = 3; + for (let a of attractions){ + let distV = p5.Vector.sub(a.pos, this.pos); + distV.setMag(G * this.r * a.r / pow(this.pos.dist(a.pos), 2)); + att.add(distV.div(this.r)); + } + if (gravity) att.y += g; + this.acc = att; + this.acc.limit(this.maxAcc); + } + + move(){ + this.vel.add(this.acc); + this.pos.add(this.vel); + } + + show(){ + noStroke(); + fill(this.c); + ellipse(this.pos.x, this.pos.y, this.r * 2); + } + + debugInformation(){ + let velX = p5.Vector.mult(this.vel, 10).x; + let velY = p5.Vector.mult(this.vel, 10).y; + let accX = velX + p5.Vector.mult(this.acc, 100).x; + let accY = velY + p5.Vector.mult(this.acc, 100).y; + push(); + translate(this.pos.x, this.pos.y); + strokeWeight(2); + stroke(255, 0, 0); + fill(255, 0, 0); + line(0, 0, velX, velY); + translate(velX, velY); + rotate(this.vel.heading()); + beginShape(); + vertex(0, 0); + vertex(-10, 10); + vertex(-10, -10); + endShape(); + rotate(-this.vel.heading()); + translate(-velX, -velY); + stroke(0, 255, 0); + fill(0, 255, 0); + line(velX, velY, accX, accY); + translate(accX, accY); + rotate(this.acc.heading()); + beginShape(); + vertex(0, 0); + vertex(-10, 10); + vertex(-10, -10); + endShape(); + rotate(-this.acc.heading()); + translate(-accX, -accY); + pop(); + } +} \ No newline at end of file diff --git a/public/scripts/events.js b/public/scripts/events.js new file mode 100644 index 0000000..8819529 --- /dev/null +++ b/public/scripts/events.js @@ -0,0 +1,42 @@ +function keyPressed(){ + if (userIsWriting) return true; + switch(keyCode){ + case 73: + debug = !debug; + break; + } + if (keyCode != 116) return false; +} + +function mouseDragged(){ + colorPicker.mouseDragged(); + for (let a of attractions){ + if (a.isGrabbed) a.grabbed(); + } +} + +function mousePressed(){ + colorPicker.mousePressed(); + for (let a of attractions){ + if (dist(a.pos.x, a.pos.y, mouseX + viewPort.x, mouseY + viewPort.y) < a.r){ + a.isGrabbed = true; + $("#defaultCanvas0").css({ + "cursor": "-webkit-grabbing", + "cursor": "grabbing" + }); + break; + } + } +} + +function mouseReleased(){ + colorPicker.mouseReleased(); + for (let a of attractions){ + if (a.isGrabbed){ + a.isGrabbed = false; + $("#defaultCanvas0").css({ + "cursor": "auto" + }); + } + } +} \ No newline at end of file diff --git a/public/scripts/lib/benjo_library.js b/public/scripts/lib/benjo_library.js new file mode 100644 index 0000000..a9ea352 --- /dev/null +++ b/public/scripts/lib/benjo_library.js @@ -0,0 +1,623 @@ +var TOP = 1; +var RIGHT = 2 +var BOTTOM = 3; +var LEFT = 4; +var TOP_RIGHT = 5; +var BOTTOM_RIGHT = 6; +var BOTTOM_LEFT = 7; +var TOP_LEFT = 8; + +var wWidth = window.innerWidth; +var wHeight = window.innerHeight; +var oldWHeight; +var oldWWidth; + +let frameRateArray = []; + +function updateVars(){ + oldWWidth = wWidth; + oldWHeight = wHeight; + wWidth = window.innerWidth; + wHeight = window.innerHeight; +} + +function collisionDetection(obj0, obj1){ + + var sp = strokePadding; + if (sp == null) sp = 0; + + if (obj0.isEllipse && obj1.isRectangle){ + + //Ball + var b = obj0; + + //Rectangle + var r = obj1; + + for (var i = 0; i < TWO_PI; i += PI / 32){ + + /* Check every borderpoint of the ball beginning + at the top in clock direction up to top again */ + + // Ball Center X + var bcx = b.x; + + // Ball Center Y + var bcy = b.y; + + // Ball Border X + var bbx = b.x + sin(i) * b.r; + + // Ball Border Y inverted because Y = 0 is the TOP of the screen + var bby = b.y - cos(i) * b.r; + + // Rectangle Width + var rW = r.width + 2 * sp; + + // Rectangle Height + var rH = r.height + 2 * sp; + + // Rectangle Border X + var rX = r.x - sp; + + // Rectangle Border Y + var rY = r.y - sp; + + // Objects touch + if (bbx > rX && bbx < rX + rW + && bby > rY && bby < rY + rH){ + + // STRAIGHT FACES // + + //Top/Bottom touch + if (bcx > rX && bcx < rX + rW){ + + //Top touch + if (b.v.y > 0) return {isTouching: true, location: TOP}; + + //Bottom touch + if (b.v.y < 0) return {isTouching: true, location: BOTTOM}; + } + + //Left/Right touch + if (bcy > rY && bcy < rY + rH){ + + //Left touch + if (b.v.x > 0) return {isTouching: true, location: LEFT}; + + //Right touch + if (b.v.x < 0) return {isTouching: true, location: RIGHT}; + + } + + // CORNERS // + + // BOTTOM Left/Right + if (i > 0 && i <= PI / 2) return {isTouching: true, location: BOTTOM_LEFT}; + + //LEFT Bottom/Top + if (i > PI / 2 && i <= PI) return {isTouching: true, location: TOP_LEFT}; + + //TOP Left/Right + if (i > PI && i <= PI + PI / 2) return {isTouching: true, location: TOP_RIGHT}; + + //RIGHT Bottom/Top + if (i > PI + PI / 2 && i <= TWO_PI) return {isTouching: true, location: BOTTOM_RIGHT}; + } + } + + } + + if (obj0.isEllipse && obj1.isEllipse){ + + //Ball 1 + var b1 = obj0; + + //Ball 2 + var b2 = obj1; + + //Balls are close to each other + if (b1.x + b1.r > b2.x - b2.r + && b1.x - b1.r < b2.x + b2.r + && b1.y + b1.r > b2.y - b2.r + && b1.y - b1.r < b2.y + b2.r){ + + var distance = sqrt(pow(b1.x - b2.x, 2) + pow(b1.y - b2.y, 2)); + + if (distance < b1.r + b2.r) return {isTouching: true}; + } + } + return {isTouching: false, location: 0}; +} + +function performCollision(obj0, obj1, collision){ + if (obj0.isEllipse){ + + var ball = obj0; + + //Ball collides with frameborder + if (obj1.isFrameborder){ + switch (collision.location){ + case BOTTOM: + ball.v.y *= -1; + break; + case LEFT: + case RIGHT: + ball.v.x *= -1; + break; + } + if (testMode && collision.location == TOP) ball.v.y *= -1; + ball.move(); + } + + //Ball collides with any brick + if (obj1.isBrick){ + switch (collision.location){ + case TOP: + case BOTTOM: + ball.v.y *= -1; + ball.move(); + return; + case LEFT: + case RIGHT: + ball.v.x *= -1; + ball.move(); + return; + case TOP_LEFT: + var cornerX = obj1.x; + var cornerY = obj1.y; + break; + case TOP_RIGHT: + var cornerX = obj1.x + obj1.width; + var cornerY = obj1.y; + break; + case BOTTOM_LEFT: + var cornerX = obj1.x; + var cornerY = obj1.y + obj1.height; + break; + case BOTTOM_RIGHT: + var cornerX = obj1.x + obj1.width; + var cornerY = obj1.y + obj1.height; + break; + } + + var nx = ball.x - cornerX; + var ny = ball.y - cornerY; + var length = sqrt(nx * nx + ny * ny); + nx /= length; + ny /= length; + + var projection = ball.v.x * nx + ball.v.y * ny; + ball.v.x = ball.v.x - 2 * projection * nx; + ball.v.y = ball.v.y - 2 * projection * ny; + + ball.move(); + + } + + //Ball collides with paddleboard + if (obj1.isPaddle){ + switch (collision.location){ + case TOP: + case TOP_LEFT: + case TOP_RIGHT: + ball.v.x = ball.calcVelocityX(obj1, ball.v.x); + ball.v.y = -ball.calcVelocityY(); + ball.move(); + return; + case LEFT: + case RIGHT: + ball.v.x *= -1; + ball.move(); + return; + case BOTTOM_LEFT: + var cornerX = obj1.x; + var cornerY = obj1.y + obj1.height; + break; + case BOTTOM_RIGHT: + var cornerX = obj1.x + obj1.width; + var cornerY = obj1.y + obj1.height; + break; + } + var nx = ball.x - cornerX; + var ny = ball.y - cornerY; + var length = sqrt(nx * nx + ny * ny); + nx /= length; + ny /= length; + + var projection = ball.v.x * nx + ball.v.y * ny; + ball.v.x = ball.v.x - 2 * projection * nx; + ball.v.y = ball.v.y - 2 * projection * ny; + + ball.move(); + } + + //Ball collides with other ball + if (obj1.isEllipse){ + + //Ball 1 + var b1 = obj0; + + //Ball 2 + var b2 = obj1; + + //Set mass equal to radius of each ball + b1.mass = b1.r; + b2.mass = b2.r; + + //Colliding angle of ball 1 to ball 2 using arc tan of both x and y differences + var collisionAngle = atan2((b2.y - b1.y), (b2.x - b1.x)); + + //Converting directions of velocity vector of balls into angles + var d1 = atan2(b1.v.y, b1.v.x); + var d2 = atan2(b2.v.y, b2.v.x); + + //Ignoring mass effects new velocites are simply magnitude multiplied with value of angle differences + var newXspeed1 = b1.v.mag * cos(d1 - collisionAngle); + var newYspeed1 = b1.v.mag * sin(d1 - collisionAngle); + var newXspeed2 = b2.v.mag * cos(d2 - collisionAngle); + var newYspeed2 = b2.v.mag * sin(d2 - collisionAngle); + + //According to the principle of linear momentum, kinetic energy stays the same after collision, so velocities are now related to masses + var finalXspeed1 = ((b1.mass - b2.mass) * newXspeed1 + b2.mass * 2 * newXspeed2) / (b1.mass + b2.mass); + var finalYspeed1 = newYspeed1; + var finalXspeed2 = (b1.mass * 2 * newXspeed1 + (b2.mass - b1.mass) * newXspeed2) / (b1.mass + b2.mass); + var finalYspeed2 = newYspeed2; + + //Values of collisionAngle + var cosAngle = cos(collisionAngle); + var sinAngle = sin(collisionAngle); + + //To also keep velocites relative to pure collisionAngle, subtract sin*x from cos*x and add sin*y to cos*y because coordSystem has y = 0 on the top + var u1x = cosAngle * finalXspeed1 - sinAngle * finalYspeed1; + var u1y = sinAngle * finalXspeed1 + cosAngle * finalYspeed1; + var u2x = cosAngle * finalXspeed2 - sinAngle * finalYspeed2; + var u2y = sinAngle * finalXspeed2 + cosAngle * finalYspeed2; + + //Set new velocities to both balls + b1.v.x = u1x; + b1.v.y = u1y; + b2.v.x = u2x; + b2.v.y = u2y; + + //Update magnitude + b1.v.mag = sqrt(pow(b1.v.x, 2) + pow(b1.v.y, 2)); + b2.v.mag = sqrt(pow(b2.v.x, 2) + pow(b2.v.y, 2)); + + + //Move balls one vx/vy forward to avoid double inverting collision detection + b1.x += b1.v.x; + b1.y += b1.v.y; + b2.x += b2.v.x; + b2.y += b2.v.y; + } + } +} + + + +function toTimeString(time, hoursWanted){ + + var time = floor(time / 10); + + var hs = String(floor(time % 100)); + var fs = String(floor((time / 100) % 60)); + + if (hoursWanted){ + var min = String(floor(((time / 100) / 60) % 60)); + var hr = String(floor(((time / 100) / 60) / 60)); + + if (hs.length < 2) hs = "0" + hs; + if (fs.length < 2) fs = "0" + fs; + if (min.length < 2) min = "0" + min; + if (hr.length < 2) hr = "0" + hr; + + var timeString = hr + ":" + min + ":" + fs + ":" + hs; + } else { + var min = String(floor(((time / 100) / 60) % 60)); + + if (hs.length < 2) hs = "0" + hs; + if (fs.length < 2) fs = "0" + fs; + if (min.length < 2) min = "0" + min; + + var timeString = min + ":" + fs + ":" + hs; + } + + + + return timeString; +} + + +function setCookie(name, value, years){ + var expires = ""; + if (years){ + var date = new Date(); + date.setTime(date.getTime() + (years * 365 * 24 * 60 * 60 * 1000)); + expires = "; expires=" + date.toUTCString(); + } + document.cookie = name + "=" + value + expires + "; path=/"; +} + +function getCookie(name){ + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for (var i = 0; i < ca.length; i++){ + var c = ca[i]; + while (c.charAt(0) == ' ') c = c.substring(1, c.length); + if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); + } + return null; +} + +function deleteCookies(){ + for (var i = 0; i < arguments.length; i++) setCookie(arguments[i], "", -1); +} + +function deleteAllCookies(){ + var cookies = document.cookie.split(";"); + for (var i = 0; i < cookies.length; i++) deleteCookies(cookies[i].split("=")[0]); +} + +Array.prototype.shuffle = function(){ + let currentIndex = this.length, temporaryValue, randomIndex; + while (0 != currentIndex){ + randomIndex = floor(random() * currentIndex); + currentIndex -= 1; + temporaryValue = this[currentIndex]; + this[currentIndex] = this[randomIndex]; + this[randomIndex] = temporaryValue; + } +} + +Array.prototype.clone = function(){ + return this.slice(0); +}; + +Array.prototype.partitiate = function(dimensions){ + if (dimensions == 0) return this; + let parts = []; + while(this.length) parts.push(this.splice(0, round(pow(this.length, 1 / (1 + 1 / dimensions)))).partitiate(dimensions - 1)); + return parts; +} + +function debugInformation(){ + let x = viewPort.x, + y = viewPort.y; + textSize(12); + textStyle(NORMAL); + stroke(255); + strokeWeight(1); + fill(255); + text("FPS : " + round(frameRate()), 10 + x, 10 + textAscent("FPS : ") + y); + text("MouseX : " + round(mouseX + x), 10 + x, 10 + textAscent("FPS : ") + 10 + textAscent("MouseX : ") + y); + text("MouseY : " + round(-mouseY - y), 10 + x, 10 + textAscent("FPS : ") + 10 + textAscent("MouseX : ") + 10 + textAscent("MouseY : ") + y); +} + + + +function ColorPicker(editor) { + this.movingObject = ""; + + this.updateFromHSV = function(){ + this.h = 1 - $("#hue_picker").position().top / $("#hue").height(); + this.s = ($("#sb_picker").position().left + 8) / $("#saturation").width(); + this.v = 1 - ($("#sb_picker").position().top + 8) / $("#value").height(); + + this.r = HSVtoRGB(this.h, this.s, this.v).r; + this.g = HSVtoRGB(this.h, this.s, this.v).g; + this.b = HSVtoRGB(this.h, this.s, this.v).b; + + this.hex = RGBtoHEX(this.r, this.g, this.b); + + this.updateInterface(); + } + + this.updateFromRGB = function(){ + this.r = $($(".color_picker_rgb")[0]).val(); + this.g = $($(".color_picker_rgb")[1]).val(); + this.b = $($(".color_picker_rgb")[2]).val(); + + this.h = RGBtoHSV(this.r, this.g, this.b).h; + this.s = RGBtoHSV(this.r, this.g, this.b).s; + this.v = RGBtoHSV(this.r, this.g, this.b).v; + + this.hex = RGBtoHEX(this.r, this.g, this.b); + + this.updateFromHEX(null, true); + + this.updateInterface(); + } + + this.updateFromHEX = function(input, otf){ + if (!otf){ //Not on the fly + if ($(input).val().isValidHEX()) this.hex = $(input).val(); + else { + alert("Error!"); + return; + } + } + + this.r = HEXtoRGB(this.hex).r; + this.g = HEXtoRGB(this.hex).g; + this.b = HEXtoRGB(this.hex).b; + + this.h = RGBtoHSV(this.r, this.g, this.b).h; + this.s = RGBtoHSV(this.r, this.g, this.b).s; + this.v = RGBtoHSV(this.r, this.g, this.b).v; + + this.updateInterface(); + } + + this.updateInterface = function(){ + var o = Math.round((this.r * 299 + (this.g * 587) + (this.b * 114)) / 1000); //https://www.nbdtech.com/Blog/archive/2008/04/27/Calculating-the-Perceived-Brightness-of-a-Color.aspx + this.fontColor = (o > 125) ? "#000" : "#FFF"; + + $($(".color_picker_rgb")[0]).val(this.r); + $($(".color_picker_rgb")[1]).val(this.g); + $($(".color_picker_rgb")[2]).val(this.b); + + $("#color_picker_hex").val(this.hex); + + $("#hue_picker").css("top", (1 - this.h) * $("#hue").height()); + $("#sb_picker").css({ + "left": this.s * $("#saturation").width() - 8, + "top": (1 - this.v) * $("#value").height() - 8 + }); + + var sRGB = HSVtoRGB(this.h, 1, 1); + var saturationBackground = "linear-gradient(to right, #FFF 0%, rgb(" + + sRGB.r + "," + + sRGB.g + "," + + sRGB.b + ") 100%)"; + + $("#saturation").css("background", saturationBackground); + + /*$($(".color_picker_rgb")[0]).css({ + "background-color": "rgb(" + this.r + ", 0, 0)" + }); + $($(".color_picker_rgb")[1]).css({ + "background-color": "rgb(0, " + this.g + ", 0)" + }); + $($(".color_picker_rgb")[2]).css({ + "background-color": "rgb(0, 0, " + this.b + ")" + });*/ + //Fancy but overloaded + + $("#color_picker_hex").css({ + "background-color": this.hex, + "color": this.fontColor + }); + } + + this.mousePressed = function(){ + var x = winMouseX - $("#saturation").offset().left; + var y = winMouseY - $("#value").offset().top; + if (x > 0 && x < $("#saturation").width() && y > 0 && y < $("#value").height()){ + this.movingObject = "sb"; + } + if (x > $("#saturation").width() + 6 && x < $("#saturation").width() + 6 + $("#hue").width() && y > 0 && y < $("#hue").height()){ + this.movingObject = "hue"; + } + this.mouseDragged(); + } + + this.mouseDragged = function(){ + if (this.movingObject == "hue"){ + var objH = $("#hue"); + var picker = $("#hue_picker"); + var h = winMouseY - objH.offset().top; + if (h > 0 && h < objH.height()){ + picker.css("top", h - 1); + } else if (h > objH.height()){ + picker.css("top", objH.height() - 1); + } else if (h < 0){ + picker.css("top", -1); + } + } + + if (this.movingObject == "sb"){ + var objS = $("#saturation"); + var objV = $("#value"); + var picker = $("#sb_picker"); + var s = winMouseX - objS.offset().left; + var v = winMouseY - objV.offset().top; + if (s > 0 && s < objS.width()){ + picker.css("left", s - 8); + } else if (s < 0){ + picker.css("left", -8); + } else if (s < objS.width()){ + picker.css("left", objS.width() - 8); + } + if (v > 0 && v < objV.height()){ + picker.css("top", v - 8); + } else if (v < 0){ + picker.css("top", -8); + } else if (v > objV.height()){ + picker.css("top", objV.height() - 8); + } + } + + this.updateFromHSV(); + } + + this.mouseReleased = function(){ + this.movingObject = ""; + } + + this.getColor = function(){ + return this.hex; + } +} + +//www.stackoverflow.com --> +function RGBtoHEX(r, g, b) { + var rgb = b | (g << 8) | (r << 16); + return '#' + (0x1000000 + rgb).toString(16).slice(1); +} + +function HEXtoRGB(hex) { + var shorthandRegex = /^#?([a-fA-F\d])([a-fA-F\d])([a-fA-F\d])$/i; + hex = hex.replace(shorthandRegex, function(m, r, g, b) { + return r + r + g + g + b + b; + }); + var result = /^#?([a-fA-F\d]{2})([a-fA-F\d]{2})([a-fA-F\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; +} + +function HSVtoRGB(h, s, v) { + var r, g, b, i, f, p, q, t; + if (arguments.length === 1) { + s = h.s, v = h.v, h = h.h; + } + i = Math.floor(h * 6); + f = h * 6 - i; + p = v * (1 - s); + q = v * (1 - f * s); + t = v * (1 - (1 - f) * s); + switch (i % 6) { + case 0: r = v, g = t, b = p; break; + case 1: r = q, g = v, b = p; break; + case 2: r = p, g = v, b = t; break; + case 3: r = p, g = q, b = v; break; + case 4: r = t, g = p, b = v; break; + case 5: r = v, g = p, b = q; break; + } + return { + r: Math.round(r * 255), + g: Math.round(g * 255), + b: Math.round(b * 255) + }; +} + +function RGBtoHSV(r, g, b) { + if (arguments.length === 1) { + g = r.g, b = r.b, r = r.r; + } + var max = Math.max(r, g, b), min = Math.min(r, g, b), + d = max - min, + h, + s = (max === 0 ? 0 : d / max), + v = max / 255; + + switch (max) { + case min: h = 0; break; + case r: h = (g - b) + d * (g < b ? 6: 0); h /= 6 * d; break; + case g: h = (b - r) + d * 2; h /= 6 * d; break; + case b: h = (r - g) + d * 4; h /= 6 * d; break; + } + + return { + h: h, + s: s, + v: v + }; +} + +String.prototype.isValidHEX = function(){ + return /(^#[0-9A-Fa-f]{6}$)|(^#[0-9A-Fa-f]{3}$)/i.test(this); +} \ No newline at end of file diff --git a/public/scripts/sketch.js b/public/scripts/sketch.js new file mode 100644 index 0000000..87890cb --- /dev/null +++ b/public/scripts/sketch.js @@ -0,0 +1,120 @@ +let debug = false; +let gravity = false; +let userIsWriting = false; +let grabbing = false; +let balls = []; +let attractions = []; +let objectSlot = null; +let graphicSlot = null; +let viewPort = {x: 0, y: 0, v: 0}; +let origin = {x: 0, y: 0}; +let colorPicker = null; + +function setup(){ + setFrameRate(60); + let c = createCanvas($("#canvasHolder").width(), $("#canvasHolder").height()); + c.parent("canvasHolder"); + graphicSlot = createGraphics($("#slot").width(), $("#slot").height()); + graphicSlot.parent("slot"); + graphicSlot.noStroke(); + $("#slot canvas").show(); + viewPort.x = -width / 2; + viewPort.y = -height / 2; + viewPort.v = 10; + colorPicker = new ColorPicker(); + colorPicker.hex = "#FF0000"; + colorPicker.updateFromHEX(null, true); + $("input").on("focus", function(){userIsWriting = true;}); + $("input").on("blur", function(){userIsWriting = false;}); + let canvas = $("#slot canvas"); + canvas.mousedown(function(){ + grabbing = true; + $("canvas, div").css({ + "cursor": "grabbing" + }); + $(window).mouseup(function(){ + if (!grabbing) return; + if (mouseX < width){ + if (objectSlot.isBall) balls.push(new Ball(mouseX + viewPort.x, mouseY + viewPort.y, objectSlot.r, objectSlot.c)); + if (objectSlot.isAttraction) attractions.push(new Attraction(mouseX + viewPort.x, mouseY + viewPort.y, objectSlot.r, objectSlot.c)); + canvas.off("mousedown", "**"); + } + grabbing = false; + $("#defaultCanvas0, div").css({ + "cursor": "auto" + }); + $("#slot canvas").css({ + "cursor": "grab" + }); + }); + }); +} + +function draw(){ + checkSlot(); + checkViewPort(); + background(50); + let grabCheck = false, + grabbingCheck = false; + for (let a of attractions){ + a.show(); + if (a.checkGrab()) grabCheck = true; + if (a.isGrabbed) grabbingCheck = true; + } + if (grabbingCheck){ + $("#defaultCanvas0").css({ + "cursor": "grabbing" + }); + } else if (grabCheck){ + $("#defaultCanvas0").css({ + "cursor": "grab" + }); + } else { + $("#defaultCanvas0").css({ + "cursor": "auto" + }); + } + for (let b of balls){ + b.attracted(); + b.move(); + b.show(); + if (debug) b.debugInformation(); + } + if (debug) debugInformation(); +} + +function checkViewPort(){ + if (keyIsDown(LEFT_ARROW) || keyIsDown(65) && !userIsWriting) viewPort.x -= viewPort.v; + if (keyIsDown(RIGHT_ARROW) || keyIsDown(68) && !userIsWriting) viewPort.x += viewPort.v; + if (keyIsDown(UP_ARROW) || keyIsDown(87) && !userIsWriting) viewPort.y -= viewPort.v; + if (keyIsDown(DOWN_ARROW) || keyIsDown(83) && !userIsWriting) viewPort.y += viewPort.v; + translate(-viewPort.x, -viewPort.y); +} + +function updateRadius(elem){ + let value = $(elem).val(); + $("#radiusRange").val(value); + $("#radiusInput").val(value); +} + +function checkSlot(){ + let val = $("#itemSelector").val(); + let radius = int($("#radiusInput").val()); + let color = colorPicker.getColor(); + switch(val){ + case "ball": + objectSlot = new Ball(graphicSlot.width / 2, graphicSlot.height / 2, radius, color); + objectSlot.isBall = true; + objectSlot.isAttraction = false; + break; + case "attractor": + objectSlot = new Attraction(graphicSlot.width / 2, graphicSlot.height / 2, radius, color); + objectSlot.isAttraction = true; + objectSlot.isBall = false; + break; + } + let o = objectSlot; + graphicSlot.clear(); + graphicSlot.fill(o.c); + graphicSlot.ellipse(o.pos.x, o.pos.y, o.r * 2); +} \ No newline at end of file diff --git a/public/styles.css b/public/styles.css new file mode 100644 index 0000000..d9d50c9 --- /dev/null +++ b/public/styles.css @@ -0,0 +1,63 @@ +a:link, a:hover, a:active, a:visited{color: #000;} + +html, body{margin: 0; padding: 0; height: 100%; width: 100%;} + +canvas{margin: 0; padding: 0; border: none; display: block;} + +button:hover{cursor: pointer;} + +div{ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +#canvasHolder{ + position: absolute; + width: calc(100% - 350px - 5px - 2 * 50px); + height: 100%; +} + +#mainInterface{ + position: absolute; + left: calc(100% - 350px - 5px - 2 * 50px); + width: 350px; + height: calc(100% - 2 * 50px); + padding: 50px; + border-left: 5px solid #000; + background-color: #AAA; +} + +#itemSelector{ + width: 200px; + height: 40px; + margin-left: 75px; + border-radius: 10px 0 0 10px; + font-size: 30px; + text-align: center; +} + +#addButton:hover{ + background-color: #1C1; +} + +#radiusRange{ + width: 100%; + margin: 70px 0 30px 0; +} + +span, #radiusInput{ + font-size: 20px; + width: 20%; +} + +#slot{ + width: 350px; + height: 20%; + border-radius: 20px; + background-color: #555; +} +#slot:hover{ + cursor: grab; +} \ No newline at end of file diff --git a/public/thumbnail.png b/public/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..c30e30170d73a0bec067619bf074aae9b13785b8 GIT binary patch literal 95254 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 l?0sjh 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�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
QaZ^*J& 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 literal 0 HcmV?d00001