diff --git a/js/detector.js b/js/detector.js index d52bead..bca5ac7 100644 --- a/js/detector.js +++ b/js/detector.js @@ -86,7 +86,7 @@ var detector = detector.draw(duration); }, - init: function() + init: function(baseSize) { detector.core.canvas = document.getElementById('detector-core'); detector.core.ctx = detector.core.canvas.getContext('2d'); @@ -103,10 +103,16 @@ var detector = var ratio = devicePixelRatio / backingStoreRatio; - detector.ratio = detector.core.canvas.width / 400; + detector.ratio = baseSize / 400; - detector.width = detector.core.canvas.width; - detector.height = detector.core.canvas.height; + detector.width = baseSize; + detector.height = baseSize; + + detector.core.canvas.width = baseSize; + detector.core.canvas.height = baseSize; + + detector.events.canvas.width = baseSize; + detector.events.canvas.height = baseSize; if (devicePixelRatio !== backingStoreRatio) { var oldWidth = detector.core.canvas.width; @@ -129,8 +135,8 @@ var detector = detector.events.ctx.scale(ratio, ratio); } - detector.core.ctx.scale(detector.ratio, detector.ratio); - detector.events.ctx.scale(detector.ratio, detector.ratio); + // detector.core.ctx.scale(detector.ratio, detector.ratio); + // detector.events.ctx.scale(detector.ratio, detector.ratio); detector.coreDraw(); detector.animate(); @@ -142,7 +148,7 @@ var detector = var cx = detector.width / 2; var cy = detector.height / 2; - ctx.clearRect(0, 0, 400, 400); + ctx.clearRect(0, 0, detector.width, detector.width); var muSplit = 2/12; for (var k = 3; k >= 1; k--) { @@ -150,17 +156,17 @@ var detector = ctx.fillStyle = detector.colors.mucalDark; ctx.beginPath(); - ctx.moveTo(cx + (detector.radius.mucal + k * detector.radius.mucalLight + k * detector.radius.mucalDark) * Math.cos(Math.PI * muSplit), cx + (detector.radius.mucal + k * detector.radius.mucalLight + k * detector.radius.mucalDark) * Math.sin(Math.PI * muSplit)); + ctx.moveTo(cx + (detector.radius.mucal + k * detector.radius.mucalLight + k * detector.radius.mucalDark) * Math.cos(Math.PI * muSplit) * detector.ratio, cy + (detector.radius.mucal + k * detector.radius.mucalLight + k * detector.radius.mucalDark) * Math.sin(Math.PI * muSplit) * detector.ratio); for (var i = 1; i <= 13; i++) { - ctx.lineTo(cx + (detector.radius.mucal + k * detector.radius.mucalLight + k * detector.radius.mucalDark) * Math.cos(Math.PI * i * muSplit), cx + (detector.radius.mucal + k * detector.radius.mucalLight + k * detector.radius.mucalDark) * Math.sin(Math.PI * i * muSplit)); + ctx.lineTo(cx + (detector.radius.mucal + k * detector.radius.mucalLight + k * detector.radius.mucalDark) * Math.cos(Math.PI * i * muSplit) * detector.ratio, cy + (detector.radius.mucal + k * detector.radius.mucalLight + k * detector.radius.mucalDark) * Math.sin(Math.PI * i * muSplit) * detector.ratio); } ctx.stroke(); ctx.fill(); ctx.beginPath(); - ctx.moveTo(cx + (detector.radius.mucal + k * detector.radius.mucalLight + (k-1) * detector.radius.mucalDark) * Math.cos(Math.PI * muSplit), cx + (detector.radius.mucal + k * detector.radius.mucalLight + (k-1) * detector.radius.mucalDark) * Math.sin(Math.PI * muSplit)); + ctx.moveTo(cx + (detector.radius.mucal + k * detector.radius.mucalLight + (k-1) * detector.radius.mucalDark) * Math.cos(Math.PI * muSplit) * detector.ratio, cy + (detector.radius.mucal + k * detector.radius.mucalLight + (k-1) * detector.radius.mucalDark) * Math.sin(Math.PI * muSplit) * detector.ratio); for (var i = 1; i <= 13; i++) { - ctx.lineTo(cx + (detector.radius.mucal + k * detector.radius.mucalLight + (k-1) * detector.radius.mucalDark) * Math.cos(Math.PI * i * muSplit), cx + (detector.radius.mucal + k * detector.radius.mucalLight + (k-1) * detector.radius.mucalDark) * Math.sin(Math.PI * i * muSplit)); + ctx.lineTo(cx + (detector.radius.mucal + k * detector.radius.mucalLight + (k-1) * detector.radius.mucalDark) * Math.cos(Math.PI * i * muSplit) * detector.ratio, cy + (detector.radius.mucal + k * detector.radius.mucalLight + (k-1) * detector.radius.mucalDark) * Math.sin(Math.PI * i * muSplit) * detector.ratio); } ctx.stroke(); ctx.fillStyle = detector.colors.mucalLight; @@ -169,9 +175,9 @@ var detector = ctx.strokeStyle = detector.colors.mucalDarkLine; ctx.beginPath(); - ctx.moveTo(cx + detector.radius.mucal * Math.cos(Math.PI * muSplit), cx + detector.radius.mucal * Math.sin(Math.PI * muSplit)); + ctx.moveTo(cx + detector.radius.mucal * Math.cos(Math.PI * muSplit) * detector.ratio, cy + detector.radius.mucal * Math.sin(Math.PI * muSplit) * detector.ratio); for (var i = 1; i <= 13; i++) { - ctx.lineTo(cx + detector.radius.mucal * Math.cos(Math.PI * i * muSplit), cx + detector.radius.mucal * Math.sin(Math.PI * i * muSplit)); + ctx.lineTo(cx + detector.radius.mucal * Math.cos(Math.PI * i * muSplit) * detector.ratio, cy + detector.radius.mucal * Math.sin(Math.PI * i * muSplit) * detector.ratio); } ctx.stroke(); ctx.globalCompositeOperation = 'destination-out'; @@ -182,39 +188,39 @@ var detector = ctx.beginPath(); ctx.strokeStyle = detector.colors.darkRingLine; ctx.fillStyle = detector.colors.darkRing; - ctx.arc(cx, cy, detector.radius.darkRing2, 0, Math.PI * 2, true); + ctx.arc(cx, cy, detector.radius.darkRing2 * detector.ratio, 0, Math.PI * 2, true); ctx.fill(); ctx.stroke(); ctx.beginPath(); ctx.globalCompositeOperation = 'destination-out'; - ctx.arc(cx, cy, detector.radius.lightRingSpace, 0, Math.PI * 2, true); + ctx.arc(cx, cy, detector.radius.lightRingSpace * detector.ratio, 0, Math.PI * 2, true); ctx.fill(); ctx.globalCompositeOperation = 'source-over'; ctx.beginPath(); ctx.strokeStyle = detector.colors.lightRingLine; ctx.fillStyle = detector.colors.lightRing; - ctx.arc(cx, cy, detector.radius.lightRing, 0, Math.PI * 2, true); + ctx.arc(cx, cy, detector.radius.lightRing * detector.ratio, 0, Math.PI * 2, true); ctx.fill(); ctx.stroke(); ctx.beginPath(); ctx.globalCompositeOperation = 'destination-out'; - ctx.arc(cx, cy, detector.radius.darkRing1Space, 0, Math.PI * 2, true); + ctx.arc(cx, cy, detector.radius.darkRing1Space * detector.ratio, 0, Math.PI * 2, true); ctx.fill(); ctx.globalCompositeOperation = 'source-over'; ctx.beginPath(); ctx.strokeStyle = detector.colors.darkRingLine ctx.fillStyle = detector.colors.darkRing; - ctx.arc(cx, cy, detector.radius.darkRing1, 0, Math.PI * 2, true); + ctx.arc(cx, cy, detector.radius.darkRing1 * detector.ratio, 0, Math.PI * 2, true); ctx.fill(); ctx.stroke(); ctx.beginPath(); ctx.globalCompositeOperation = 'destination-out'; - ctx.arc(cx, cy, detector.radius.ecal, 0, Math.PI * 2, true); + ctx.arc(cx, cy, detector.radius.ecal * detector.ratio, 0, Math.PI * 2, true); ctx.fill(); ctx.globalCompositeOperation = 'source-over'; @@ -224,10 +230,10 @@ var detector = var calSplit = 20/2; for (var i = 0; i < 20; i++) { ctx.beginPath(); - ctx.moveTo(cx + detector.radius.ecal * Math.cos(Math.PI * i / calSplit), cx + detector.radius.ecal * Math.sin(Math.PI * i / calSplit)); - ctx.lineTo(cx + detector.radius.hcal * Math.cos(Math.PI * i / calSplit), cx + detector.radius.hcal * Math.sin(Math.PI * i / calSplit)); - ctx.arc(cx, cy, detector.radius.hcal, Math.PI * i / calSplit, Math.PI * (i+1) / calSplit, false); - ctx.lineTo(cx + detector.radius.ecal * Math.cos(Math.PI * (i+1) / calSplit), cx + detector.radius.ecal * Math.sin(Math.PI * (i+1) / calSplit)); + ctx.moveTo(cx + detector.radius.ecal * Math.cos(Math.PI * i / calSplit) * detector.ratio, cy + detector.radius.ecal * Math.sin(Math.PI * i / calSplit) * detector.ratio); + ctx.lineTo(cx + detector.radius.hcal * Math.cos(Math.PI * i / calSplit) * detector.ratio, cy + detector.radius.hcal * Math.sin(Math.PI * i / calSplit) * detector.ratio); + ctx.arc(cx, cy, detector.radius.hcal * detector.ratio, Math.PI * i / calSplit, Math.PI * (i+1) / calSplit, false); + ctx.lineTo(cx + detector.radius.ecal * Math.cos(Math.PI * (i+1) / calSplit) * detector.ratio, cy + detector.radius.ecal * Math.sin(Math.PI * (i+1) / calSplit) * detector.ratio); ctx.closePath(); ctx.fill(); ctx.stroke(); @@ -238,10 +244,10 @@ var detector = var calSplit = 20/2; for (var i = 0; i < 20; i++) { ctx.beginPath(); - ctx.moveTo(cx + detector.radius.siliconSpace * Math.cos(Math.PI * i / calSplit), cx + detector.radius.siliconSpace * Math.sin(Math.PI * i / calSplit)); - ctx.lineTo(cx + detector.radius.ecal * Math.cos(Math.PI * i / calSplit), cx + detector.radius.ecal * Math.sin(Math.PI * i / calSplit)); - ctx.lineTo(cx + detector.radius.ecal * Math.cos(Math.PI * (i+1) / calSplit), cx + detector.radius.ecal * Math.sin(Math.PI * (i+1) / calSplit)); - ctx.lineTo(cx + detector.radius.siliconSpace * Math.cos(Math.PI * (i+1) / calSplit), cx + detector.radius.siliconSpace * Math.sin(Math.PI * (i+1) / calSplit)); + ctx.moveTo(cx + detector.radius.siliconSpace * Math.cos(Math.PI * i / calSplit) * detector.ratio, cy + detector.radius.siliconSpace * Math.sin(Math.PI * i / calSplit) * detector.ratio); + ctx.lineTo(cx + detector.radius.ecal * Math.cos(Math.PI * i / calSplit) * detector.ratio, cy + detector.radius.ecal * Math.sin(Math.PI * i / calSplit) * detector.ratio); + ctx.lineTo(cx + detector.radius.ecal * Math.cos(Math.PI * (i+1) / calSplit) * detector.ratio, cy + detector.radius.ecal * Math.sin(Math.PI * (i+1) / calSplit) * detector.ratio); + ctx.lineTo(cx + detector.radius.siliconSpace * Math.cos(Math.PI * (i+1) / calSplit) * detector.ratio, cy + detector.radius.siliconSpace * Math.sin(Math.PI * (i+1) / calSplit) * detector.ratio); ctx.closePath(); ctx.fill(); ctx.stroke(); @@ -250,14 +256,14 @@ var detector = ctx.beginPath(); ctx.strokeStyle = detector.colors.siliconRingLine; ctx.fillStyle = detector.colors.siliconRing; - ctx.arc(cx, cy, detector.radius.silicon, 0, Math.PI * 2, true); + ctx.arc(cx, cy, detector.radius.silicon * detector.ratio, 0, Math.PI * 2, true); ctx.fill(); ctx.stroke(); ctx.beginPath(); ctx.strokeStyle = detector.colors.siliconRingLine; ctx.fillStyle = detector.colors.siliconRing; - ctx.arc(cx, cy, detector.radius.siliconInner, 0, Math.PI * 2, true); + ctx.arc(cx, cy, detector.radius.siliconInner * detector.ratio, 0, Math.PI * 2, true); ctx.fill(); ctx.stroke(); }, @@ -317,5 +323,3 @@ window.requestAnimFrame = (function(){ window.setTimeout(callback, 1000 / 60); }; })(); - -(function() { detector.init(); })(); diff --git a/js/event.js b/js/event.js index 3fef902..cbf5bf9 100644 --- a/js/event.js +++ b/js/event.js @@ -12,17 +12,17 @@ function ParticleEvent(type, count, external) switch (this.type.name) { case 'electron': - this.length = detector.radius.siliconSpace + Math.round((detector.radius.ecal + 10 - detector.radius.siliconSpace) * Math.random()); + this.length = detector.radius.siliconSpace * detector.ratio + Math.round((detector.radius.ecal * detector.ratio + 10 - detector.radius.siliconSpace * detector.ratio) * Math.random()); this.direction = Math.random() * Math.PI * 2; this.radius = 20 + Math.round((100 - 20) * Math.random()); break; case 'jet': - this.length = detector.radius.ecal + Math.round((detector.radius.mucal - detector.radius.ecal) * Math.random()); + this.length = detector.radius.ecal * detector.ratio + Math.round((detector.radius.mucal * detector.ratio - detector.radius.ecal * detector.ratio) * Math.random()); this.direction = Math.random() * Math.PI * 2; this.radius = 40 + Math.round((200 - 40) * Math.random()); break; case 'muon': - this.length = detector.radius.mucal + 3 * detector.radius.mucalDark + Math.round((4 * detector.radius.mucalLight + 2 * detector.radius.mucalDark) * Math.random()); + this.length = detector.radius.mucal * detector.ratio + 3 * detector.radius.mucalDark * detector.ratio + Math.round((4 * detector.radius.mucalLight * detector.ratio + 2 * detector.radius.mucalDark * detector.ratio) * Math.random()); this.direction = Math.random() * Math.PI * 2; this.radius = 200 + Math.round((600 - 200) * Math.random()); break; diff --git a/js/ui.js b/js/ui.js index dcbd6fa..4936beb 100644 --- a/js/ui.js +++ b/js/ui.js @@ -36,6 +36,16 @@ var UI = (function () { $('#upgradesContent').detach().appendTo('#upgradesLarge'); } } + + if ($(window).width() < 992) { + if (detector.width != 300) { + detector.init(300); + } + } else { + if (detector.width != 400) { + detector.init(400); + } + } } $(window).resize(resize);