added text for detector

This commit is contained in:
Ryan Tang 2022-12-23 17:47:22 -05:00
parent 4817737841
commit 484ed688bd

44
geo.js
View File

@ -167,6 +167,22 @@ class beamCircleElement extends basicShape{
} }
} }
class detectorStation extends beamCircleElement {
constructor(xy, name){
super(xy, 100, 0, Math.PI*2, color.Detector);
this.xy = xy;
this.name = name;
}
draw(onoff){
super.draw(onoff);
let ctx = staticLayer.getContext("2d");
ctx.font = "40px Verdana";
ctx.fillStyle = 'black';
let text = ctx.measureText(this.name);
ctx.fillText(this.name, this.xy[0]-text.width/2, this.xy[1] + 12);
}
}
class beamSpliter extends basicShape{ class beamSpliter extends basicShape{
constructor(xy, r, rad, color){ constructor(xy, r, rad, color){
super(staticLayer, color); super(staticLayer, color);
@ -251,6 +267,12 @@ class beamDipole extends basicShape{
} }
function DrawText(xy, text, color, fontSize){
let ctx = staticLayer.getContext("2d");
ctx.font = fontSize + " Verdana";
ctx.fillStyle = color;
ctx.fillText( text, xy[0], xy[1]);
}
///========================= Floor plan ///========================= Floor plan
let windowSize = [3840, 2160]; // 4K let windowSize = [3840, 2160]; // 4K
@ -258,12 +280,12 @@ let windowSize = [3840, 2160]; // 4K
let sourceLine; let sourceLine;
{ {
let RFSource1a = new beamRectElement([windowSize[0]*0.9, windowSize[1]*0.8], 0, 40, 100, color.RFsourcce); let RFSource1a = new beamRectElement([windowSize[0]*0.9, windowSize[1]*0.9], 0, 40, 100, color.RFsourcce);
let RFSource1b = new beamRectElement(RFSource1a.exitPos, 0, 40, 20, color.RFsourcce); let RFSource1b = new beamRectElement(RFSource1a.exitPos, 0, 40, 20, color.RFsourcce);
let s0 = new beamSpliter(RFSource1b.GetExitPos(120), 50, Math.PI, color.Dipole); let s0 = new beamSpliter(RFSource1b.GetExitPos(120), 50, Math.PI, color.Dipole);
let b0a = new beamLine(RFSource1b.exitPos, 0, 200); let b0a = new beamLine(RFSource1b.exitPos, 0, 200);
let tandem = new tandemClass(b0a.exitPos, 100, 100, color.Tandem); let tandem = new tandemClass(b0a.exitPos, 300, 100, color.Tandem);
let b0b = new beamLine(tandem.exitPos, 0, 300); b0b.offset = 8; let b0b = new beamLine(tandem.exitPos, 0, 300); b0b.offset = 8;
let q0 = new beamRectElement(tandem.GetExitPos(50), 0, 60, 60, color.Qpole); let q0 = new beamRectElement(tandem.GetExitPos(50), 0, 60, 60, color.Qpole);
@ -287,8 +309,8 @@ let targetRoom1;
let q1a = new beamRectElement(fan.GetExitPos(0.8, 100), fan.exitAng, 60, 60, color.Qpole); let q1a = new beamRectElement(fan.GetExitPos(0.8, 100), fan.exitAng, 60, 60, color.Qpole);
let df1a = new beamRectElement(q1a.GetExitPos(30), fan.exitAng, 30, 40, color.Dipole); let df1a = new beamRectElement(q1a.GetExitPos(30), fan.exitAng, 30, 40, color.Dipole);
let b1a_1 = new beamLine(b1a_0.exitPos, fan.exitAng, 300); let b1a_1 = new beamLine(b1a_0.exitPos, fan.exitAng, 300);
let GammaStation = new beamCircleElement(b1a_0.exitPos, 100, 0, Math.PI*2, color.Detector); let GammaStation = new detectorStation(b1a_0.exitPos, "Gamma");
let Catrina = new beamCircleElement(b1a_1.exitPos, 100, 0, Math.PI*2, color.Detector); let Catrina = new detectorStation(b1a_1.exitPos, "Carina");
upperLine = {b1a_0, q1a, df1a, b1a_1, GammaStation, Catrina}; upperLine = {b1a_0, q1a, df1a, b1a_1, GammaStation, Catrina};
} }
@ -348,7 +370,7 @@ let targetRoom2;
let df2a_2 = new beamRectElement( df2a_1.GetExitPos(30), fan2.GetExitAng(frac), 30, 40, color.Deflector); let df2a_2 = new beamRectElement( df2a_1.GetExitPos(30), fan2.GetExitAng(frac), 30, 40, color.Deflector);
let d3 = new beamDipole(b2a.GetExitPos(0), 80, 90* deg, -40 * deg, color.Dipole); let d3 = new beamDipole(b2a.GetExitPos(0), 80, 90* deg, -40 * deg, color.Dipole);
let b2a_1 = new beamLine( d3.GetExitPos(0), -95 * deg, 500); let b2a_1 = new beamLine( d3.GetExitPos(0), -95 * deg, 500);
let Resolut = new beamCircleElement(b2a_1.GetExitPos(0), 100, 0, Math.PI*2, color.Detector); let Resolut = new detectorStation(b2a_1.GetExitPos(0), "Resolut");
ResolutLine = {b2a, df2a_0, q2a, df2a_1, df2a_2, d3, b2a_1, Resolut}; ResolutLine = {b2a, df2a_0, q2a, df2a_1, df2a_2, d3, b2a_1, Resolut};
} }
@ -357,9 +379,9 @@ let targetRoom2;
{ {
let frac = 0.5; let frac = 0.5;
let b2b = new beamLine(fan2.GetExitPos(frac, 0), fan2.GetExitAng(frac), 500); let b2b = new beamLine(fan2.GetExitPos(frac, 0), fan2.GetExitAng(frac), 500);
let q2b = new beamRectElement(fan2.GetExitPos(frac, 30), fan2.GetExitAng(frac), 60, 60, color.Qpole); let q2b = new beamRectElement(fan2.GetExitPos(frac, 150), fan2.GetExitAng(frac), 60, 60, color.Qpole);
let df2b = new beamRectElement( fan2.GetExitPos(frac, 120), fan2.GetExitAng(frac), 30, 40, color.Deflector); let df2b = new beamRectElement( fan2.GetExitPos(frac, 240), fan2.GetExitAng(frac), 30, 40, color.Deflector);
let Anasen = new beamCircleElement(b2b.GetExitPos(0), 100, 0, Math.PI*2, color.Detector); let Anasen = new detectorStation(b2b.GetExitPos(0), "Anasen");
AnasenLine = {b2b, q2b, df2b, Anasen}; AnasenLine = {b2b, q2b, df2b, Anasen};
} }
@ -379,7 +401,7 @@ let targetRoom2;
let q2c_1 = new beamRectElement(fan2c.GetExitPos(frac, 100), fan2c.GetExitAng(frac), 60, 60, color.Qpole); let q2c_1 = new beamRectElement(fan2c.GetExitPos(frac, 100), fan2c.GetExitAng(frac), 60, 60, color.Qpole);
let df2c_1a = new beamRectElement( q2c_1.GetExitPos(30), fan2c.GetExitAng(frac), 30, 40, color.Deflector); let df2c_1a = new beamRectElement( q2c_1.GetExitPos(30), fan2c.GetExitAng(frac), 30, 40, color.Deflector);
let df2c_1b = new beamRectElement( df2c_1a.GetExitPos(30), fan2c.GetExitAng(frac), 30, 40, color.Deflector); let df2c_1b = new beamRectElement( df2c_1a.GetExitPos(30), fan2c.GetExitAng(frac), 30, 40, color.Deflector);
let SPS = new beamCircleElement(b2c_1.GetExitPos(0), 100, 0, Math.PI*2, color.Detector); let SPS = new detectorStation(b2c_1.GetExitPos(0), "SPS");
SplitPoleLine = {b2c_1, q2c_1, df2c_1a, df2c_1b, SPS}; SplitPoleLine = {b2c_1, q2c_1, df2c_1a, df2c_1b, SPS};
} }
@ -391,7 +413,7 @@ let targetRoom2;
let q2c_2 = new beamRectElement(fan2c.GetExitPos(frac, 100), fan2c.GetExitAng(frac), 60, 60, color.Qpole); let q2c_2 = new beamRectElement(fan2c.GetExitPos(frac, 100), fan2c.GetExitAng(frac), 60, 60, color.Qpole);
let df2c_2a = new beamRectElement( q2c_2.GetExitPos(30), fan2c.GetExitAng(frac), 30, 40, color.Deflector); let df2c_2a = new beamRectElement( q2c_2.GetExitPos(30), fan2c.GetExitAng(frac), 30, 40, color.Deflector);
let df2c_2b = new beamRectElement( df2c_2a.GetExitPos(30), fan2c.GetExitAng(frac), 30, 40, color.Deflector); let df2c_2b = new beamRectElement( df2c_2a.GetExitPos(30), fan2c.GetExitAng(frac), 30, 40, color.Deflector);
let Clarion2 = new beamCircleElement(b2c_2.GetExitPos(0), 100, 0, Math.PI*2, color.Detector); let Clarion2 = new detectorStation(b2c_2.GetExitPos(0), "Clarion2");
ClarionLine = {b2c_2, q2c_2, df2c_2a, df2c_2b, Clarion2}; ClarionLine = {b2c_2, q2c_2, df2c_2a, df2c_2b, Clarion2};
} }
@ -446,6 +468,6 @@ function lineMotion(){
sourceLine.b0b.march(); sourceLine.b0b.march();
targetRoom1.beampipe.march(); targetRoom1.beampipe.march();
targetRoom1.upperLine.b1a_0.march(); targetRoom1.upperLine.b1a_0.march();
setTimeout(lineMotion, 20); setTimeout(lineMotion, 10);
} }
lineMotion(); lineMotion();