Skip to content
Snippets Groups Projects
Commit 190f576c authored by Lucio Zambon's avatar Lucio Zambon
Browse files

Update simulator2d.js

parent 71b9b7a1
No related branches found
No related tags found
No related merge requests found
......@@ -187,9 +187,9 @@
);
}
appendSvg("path", {id:facility+"_simulatorhor", class: "simulatorhor trajectory "+facility, visibility:visibility, name:"simulatorhor", fill: "none", "stroke-width":"150", "stroke":"red", "stroke-opacity":"0.6", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_hor, false, false, '.svg-pan-zoom_viewport');
appendSvg("path", {id:facility+"_simulatorreferencehor", class: "simulatorhor trajectory "+facility, visibility:visibility, name:"simulatorreferencehor", fill: "none", "stroke-width":"150", "stroke":"darkred", "stroke-opacity":"0.9", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_hor, false, false, '.svg-pan-zoom_viewport');
// appendSvg("path", {id:facility+"_simulatorreferencehor", class: "simulatorhor trajectory "+facility, visibility:visibility, name:"simulatorreferencehor", fill: "none", "stroke-width":"150", "stroke":"darkred", "stroke-opacity":"0.9", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_hor, false, false, '.svg-pan-zoom_viewport');
appendSvg("path", {id:facility+"_simulatorver", class: "simulatorver trajectory "+facility, visibility:visibility, name:"simulatorver", fill: "none", "stroke-width":"150", "stroke":"limegreen", "stroke-opacity":"0.6", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_ver, false, false, '.svg-pan-zoom_viewport');
appendSvg("path", {id:facility+"_simulatorreferencever", class: "simulatorver trajectory "+facility, visibility:visibility, name:"simulatorreferencever", fill: "none", "stroke-width":"150", "stroke":"darkgreen", "stroke-opacity":"0.9", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_ver, false, false, '.svg-pan-zoom_viewport');
// appendSvg("path", {id:facility+"_simulatorreferencever", class: "simulatorver trajectory "+facility, visibility:visibility, name:"simulatorreferencever", fill: "none", "stroke-width":"150", "stroke":"darkgreen", "stroke-opacity":"0.9", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, simulator_clicked_ver, false, false, '.svg-pan-zoom_viewport');
// console.log("path", {id:facility+"_simulatorhor", name:"simulatorhor", d: dver.join(' ')+' Z'});
}
}
......@@ -217,25 +217,45 @@
main.style.cursor = 'crosshair';
// main.addEventListener(measurementEvent, measurementListener, false);
main.addEventListener('mousemove', function(e) {getRulerPosition(main, e);});
rulerSwitch(500, 500);
rulerSwitch(0, 0);
}
function getRulerPosition(main, event) {
const rect = main.getBoundingClientRect();
const x = event.clientX - rect.left;
const y = event.clientY - rect.top;
$('#ruler1').attr('transform', 'translate('+ ((x - panZoomPanther.getPan().x)/panZoomPanther.getSizes().realZoom)+' '+((y - panZoomPanther.getPan().y)/panZoomPanther.getSizes().realZoom)+')');
const vertex = [];
let p;
let minDistance = Infinity;
let d = 0;
let dindex = -1;
const x1 = (x - panZoomPanther.getPan().x) / panZoomPanther.getSizes().realZoom;
const y1 = (y - panZoomPanther.getPan().y) / panZoomPanther.getSizes().realZoom;
for (let i=0; i < lattice.sr.sections.length; i++) {
const j = (i+1) % lattice.sr.sections.length;
vertex[i] = lattice.sr.sections[i].start;
d = pDistance(x1, y1, vertex[i].x, vertex[i].z, lattice.sr.sections[j].start.x, lattice.sr.sections[j].start.z);
if (minDistance > d.dist) { minDistance = d.dist; dindex = i; p = d;}
}
const i = dindex;
const j = (i+1) % lattice.sr.sections.length;
const alpha = 180/Math.PI*Math.atan2(lattice.sr.sections[j].start.z-lattice.sr.sections[i].start.z, lattice.sr.sections[j].start.x-lattice.sr.sections[i].start.x);
console.log(dindex, p.dist, p.x, p.y, alpha);
// $('#ruler1').attr('transform', 'translate('+ ((p.x - panZoomPanther.getPan().x)/panZoomPanther.getSizes().realZoom)+' '+((p.y - panZoomPanther.getPan().y)/panZoomPanther.getSizes().realZoom)+')');
$('#ruler').attr('transform', 'translate('+ (p.x)+' '+(p.y)+'),rotate('+alpha+')');
}
function rulerSwitch(cx, cy) {
appendSvg("line", {id: 'ruler1', x1: cx, y1: cy, x2: cx+1000, y2: cy, style:"display: block", stroke:"yellow", "stroke-width":100});
/*for (let i=1; i<32; i++) {
appendSvg("line", {id: 'tick'+i, x1: cx, y1: cy, x2: cx, y2: cy, style:"display: block", fill:"yellow", stroke:"black","stroke-width":1});
appendSvg("text", {id: 'tickLabel'+i, x: cx, y: cy, fill:"white", stroke:"black","stroke-width":1, "font-family":"Arial", "font-size":20, "font-weight":"bold", "text-anchor": "start"});
}*/
appendSvg("g", {id: 'ruler'}, false, false, 'rulerclass');
appendSvg("line", {id: 'ruler1', x1: cx-10000, y1: cy, x2: cx+10000, y2: cy, style:"display: block", stroke:"yellow", "stroke-width":100}, false, false, 'rulerclass', '#ruler');
for (let i=-10; i<=10; i++) {
const xt = (cx+i*1000);
appendSvg("line", {id: 'tick1'+(i+11), x1: xt, y1: cy, x2: xt, y2: cy+300, style:"display: block", stroke:"yellow","stroke-width":100}, false, false, 'rulerclass', '#ruler');
// appendSvg("text", {id: 'tickLabel'+i, x: cx, y: cy, fill:"white", stroke:"black","stroke-width":1, "font-family":"Arial", "font-size":20, "font-weight":"bold", "text-anchor": "start"});
}
}
function simulatorSwitch(simulatorData, params) {
simulator = params.simulator;
$("#sr_simulatorreferencehor").attr('visibility', "hidden");
$("#sr_simulatorreferencever").attr('visibility', "hidden");
// $("#sr_simulatorreferencehor").attr('visibility', "hidden");
// $("#sr_simulatorreferencever").attr('visibility', "hidden");
scaleHor.$fill.style.width = "50%";
scaleVer.$fill.style.width = "50%";
if (simulatorData.reader !== false) {
......@@ -253,8 +273,8 @@
if (typeof $('#'+facility+"_simulatorhor").attr('visibility') != 'undefined') {
$('#'+facility+"_simulatorhor").attr('visibility', "hidden");
$('#'+facility+"_simulatorver").attr('visibility', "hidden");
$('#'+facility+"_simulatorreferencehor").attr('visibility', "hidden");
$('#'+facility+"_simulatorreferencever").attr('visibility', "hidden");
// $('#'+facility+"_simulatorreferencehor").attr('visibility', "hidden");
// $('#'+facility+"_simulatorreferencever").attr('visibility', "hidden");
}
}
$('.simulatorgauge').hide();
......@@ -272,8 +292,8 @@
if (typeof $('#'+facility+"_simulatorhor").attr('visibility') != 'undefined') {
$('#'+facility+"_simulatorhor").attr('visibility', "visible");
$('#'+facility+"_simulatorver").attr('visibility', "visible");
if (localStorage.getItem('reference'+simulator+'hor')!=null) $('#'+facility+"_simulatorreferencehor").attr('visibility', "visible");
if (localStorage.getItem('reference'+simulator+'ver')!=null) $('#'+facility+"_simulatorreferencever").attr('visibility', "visible");
// if (localStorage.getItem('reference'+simulator+'hor')!=null) $('#'+facility+"_simulatorreferencehor").attr('visibility', "visible");
// if (localStorage.getItem('reference'+simulator+'ver')!=null) $('#'+facility+"_simulatorreferencever").attr('visibility', "visible");
}
// console.log('#'+facility+"_simulatorhor", $('#'+facility+"_simulatorhor").attr('visibility'), typeof simulatorData[facility]);
if (typeof simulatorData[facility] == 'undefined' || typeof simulatorData[facility].map == 'undefined') continue;
......@@ -324,6 +344,8 @@
const referenceDataVer = [];
const referencehor = JSON.parse(localStorage.getItem('reference'+simulator+'hor'));
const referencever = JSON.parse(localStorage.getItem('reference'+simulator+'ver'));
$('#hor_set').css('background-color',localStorage.getItem('reference'+simulator+'hor')!=null?'red':'lightgrey')
$('#ver_set').css('background-color',localStorage.getItem('reference'+simulator+'ver')!=null?'green':'lightgrey')
if (val.Hor) {
for (i=0; i<val.Hor.length; i++) {
if (typeof compData[facility].map[i] == 'undefined') continue;
......@@ -332,34 +354,36 @@
const pos = compData[facility].pos[j];
if (pos==null) continue;
const beta = Math.PI*compData[facility].dir[j]/180;
const vh = localStorage.getItem('reference'+simulator+'hor')==null? val.Hor[i]: val.Hor[i] - referencehor[i];
// https://en.wikipedia.org/wiki/Logarithmic_scale#Extensions
const valHor = logScaleHor? Math.sign(val.Hor[i])*Math.log10(1+ Math.abs(val.Hor[i]*Math.LN10)): val.Hor[i];
if (localStorage.getItem('reference'+simulator+'hor')!=null) refHor = logScaleHor? Math.sign(referencehor[i])*Math.log10(1+ Math.abs(referencehor[i]*Math.LN10)): referencehor[i];
const valVer = logScaleVer? Math.sign(val.Ver[i])*Math.log10(1+ Math.abs(val.Ver[i]*Math.LN10)): val.Ver[i];
if (localStorage.getItem('reference'+simulator+'ver')!=null) refVer = logScaleVer? Math.sign(referencever[i])*Math.log10(1+ Math.abs(referencever[i]*Math.LN10)): referencever[i];
const valHor = logScaleHor? Math.sign(vh)*Math.log10(1+ Math.abs(vh*Math.LN10)): vh;
// if (localStorage.getItem('reference'+simulator+'hor')!=null) refHor = logScaleHor? Math.sign(referencehor[i])*Math.log10(1+ Math.abs(referencehor[i]*Math.LN10)): referencehor[i];
const vv = localStorage.getItem('reference'+simulator+'ver')==null? val.Ver[i]: val.Ver[i] - referencever[i];
const valVer = logScaleVer? Math.sign(vv)*Math.log10(1+ Math.abs(vv*Math.LN10)): vv;
// if (localStorage.getItem('reference'+simulator+'ver')!=null) refVer = logScaleVer? Math.sign(referencever[i])*Math.log10(1+ Math.abs(referencever[i]*Math.LN10)): referencever[i];
// if (i<20) console.log('i', i, 'pos',pos, 'dir', compData[facility].dir[i], 'facility', facility, beta, Math.cos(beta), Math.sin(beta));
simulatorDataHor.push((simulatorDataHor.length==0?'M':'L')+
Math.round(pos[0] - valHor*simulatorFactorHor*Math.sin(beta)) + ' ' +
Math.round(pos[1] + valHor*simulatorFactorHor*Math.cos(beta))
);
if (localStorage.getItem('reference'+simulator+'hor')!=null) referenceDataHor.push((referenceDataHor.length==0?'M':'L')+
/*if (localStorage.getItem('reference'+simulator+'hor')!=null) referenceDataHor.push((referenceDataHor.length==0?'M':'L')+
Math.round(pos[0] - refHor*simulatorFactorHor*Math.sin(beta)) + ' ' +
Math.round(pos[1] + refHor*simulatorFactorHor*Math.cos(beta))
);
);*/
simulatorDataVer.push((simulatorDataVer.length==0?'M':'L')+
Math.round(pos[0] - valVer*simulatorFactorVer*Math.sin(beta)) + ' ' +
Math.round(pos[1] + valVer*simulatorFactorVer*Math.cos(beta))
);
if (localStorage.getItem('reference'+simulator+'ver')!=null) referenceDataVer.push((referenceDataVer.length==0?'M':'L')+
/*if (localStorage.getItem('reference'+simulator+'ver')!=null) referenceDataVer.push((referenceDataVer.length==0?'M':'L')+
Math.round(pos[0] - refVer*simulatorFactorVer*Math.sin(beta)) + ' ' +
Math.round(pos[1] + refVer*simulatorFactorVer*Math.cos(beta))
);
);*/
}
// console.log('Hor', simulatorDataHor.join(' ')+(lattice[facility].sections[0].chamber?' Z':''));
$('#'+facility+"_simulatorhor").attr('d', simulatorDataHor.join(' ')+(lattice[facility].sections[0].chamber?' Z':''));
$('#'+facility+"_simulatorver").attr('d', simulatorDataVer.join(' ')+(lattice[facility].sections[0].chamber?' Z':''));
if (localStorage.getItem('reference'+simulator+'hor')!=null) $('#'+facility+"_simulatorreferencehor").attr('d', referenceDataHor.join(' ')+(lattice[facility].sections[0].chamber?' Z':''));
if (localStorage.getItem('reference'+simulator+'ver')!=null) $('#'+facility+"_simulatorreferencever").attr('d', referenceDataVer.join(' ')+(lattice[facility].sections[0].chamber?' Z':''));
// if (localStorage.getItem('reference'+simulator+'hor')!=null) $('#'+facility+"_simulatorreferencehor").attr('d', referenceDataHor.join(' ')+(lattice[facility].sections[0].chamber?' Z':''));
// if (localStorage.getItem('reference'+simulator+'ver')!=null) $('#'+facility+"_simulatorreferencever").attr('d', referenceDataVer.join(' ')+(lattice[facility].sections[0].chamber?' Z':''));
}
}
function simulatorDisplay(params) {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment