Skip to content
Snippets Groups Projects
Commit 1a5d0766 authored by Manuel Amesberger's avatar Manuel Amesberger
Browse files

split processing function in data parsing and arrrow

creation/updating
parent bd5dfc2f
No related branches found
No related tags found
No related merge requests found
......@@ -4,13 +4,16 @@
var vectFieldDat = "http://localhost:8081/arrows" //URL of the vectorfile in json-format
// =====Offset parameters=====
// =====Default Offset parameters=====
var offsetXmin = -1.0;
var offsetXmax = 1.0;
var offsetYmin = -1.0;
var offsetYmax = 1.0;
var offsetZmin = -1.0;
var offsetZmax = 1.0;
// ==========Update Rate =============
var updateFrequency = 1000;
// =====Arrow depiction parameters=====
var arrowMaxLength = 2.0;
......@@ -36,7 +39,7 @@
this.arrowMinLength = 0.5;
};
var vecDataTransferHelper;
var oldVecArrayLength = 0;
var vectorlist = [];
......@@ -204,7 +207,7 @@
// as we do changeMatrixMode: 'cameraTransformMatrix', start with invisible scene
scene.visible = false
// ===================== Read Vector JSON File and Process Data ====================================
// ===================== Read Vector JSON File====================================
var readJSON = function () {
var rawFile = new XMLHttpRequest();
......@@ -218,71 +221,7 @@
if (rawFile.status === 200) {
console.log("RAW-File ready")
var vecDat = rawFile.responseText;
var vecArr = JSON.parse(vecDat);
for (var i = 0; i < vecArr.arrows.length; i++) {
// Vector Direction
var XDir = vecArr.arrows[i].direction.x;
var YDir = vecArr.arrows[i].direction.y;
var ZDir = vecArr.arrows[i].direction.z;
var dir2 = new THREE.Vector3(XDir, YDir, ZDir);
var vecLength = dir2.length();
var colorArray = colorgradient(vecLength);
// Normalize Vector Direction
dir2.normalize();
// set Vector Origin, Length
var YBase = vecArr.arrows[i].base.y;
var XBase = vecArr.arrows[i].base.x;
var ZBase = vecArr.arrows[i].base.z;
var origin2 = new THREE.Vector3(XBase, YBase, ZBase);
// Set color of vectors
var hex2 = new THREE.Color();
hex2.setRGB(colorArray[0], colorArray[1], colorArray[2]); // Value with gradient;
// check if arrows are needed to be added and push new arrows in array
if (oldVecArrayLength < vecArr.arrows.length) {
var arrowHelper2 = new THREE.ArrowHelper(dir2, origin2, dir2.length(), hex2);
vectorlist.push({
arrow: arrowHelper2
})
vectorfield.add(vectorlist[i].arrow)
console.log("Adding")
// else just update the present arrows with new values from json-file
} else {
vectorlist[i].arrow.visible = true;
vectorlist[i].arrow.position.set(XBase, YBase, ZBase);
vectorlist[i].arrow.setDirection(dir2);
vectorlist[i].arrow.setLength(dir2.length());
vectorlist[i].arrow.setColor(hex2);
console.log("Updating")
};
// look up if the length is exceedes the set limits and set arrow to specific color and shape
if (vecLength > arrowMaxLength){
vectorlist[i].arrow.setLength(nonArrowLength, nonArrowHeadLength, nonArrowHeadWidth)
vectorlist[i].arrow.setColor( new THREE.Color(maxColor));
};
if (vecLength < arrowMinLength){
vectorlist[i].arrow.setLength(nonArrowLength, nonArrowHeadLength, nonArrowHeadWidth)
vectorlist[i].arrow.setColor( new THREE.Color(minColor));
}
};
// set not needed arrowHelper objects invisible
if (oldVecArrayLength > vecArr.arrows.length){
for(var j = vecArr.arrows.length; j < oldVecArrayLength; j++){
vectorlist[j].arrow.visible = false
}
}
oldVecArrayLength = vecArr.arrows.length;
var vecArray = JSON.parse(vecDat);
};
} else if (rawFile.readyState == 1) {
console.log(getNeatTime(Date.now()) + ": File ( " + vectFieldDat + ") currently opened.");
......@@ -293,20 +232,90 @@
} else {
console.log(getNeatTime(Date.now()) + ": File (" + vectFieldDat + ") yet to be sent.");
}
vecDataTransferHelper = vecArray;
};
rawFile.send(null);
};
// ===================== Process, Create and Update Arrows ====================================
var updateVectors = function(){
var vecArr = vecDataTransferHelper;
for (var i = 0; i < vecArr.arrows.length; i++) {
// Vector Direction
var XDir = vecArr.arrows[i].direction.x;
var YDir = vecArr.arrows[i].direction.y;
var ZDir = vecArr.arrows[i].direction.z;
var dir2 = new THREE.Vector3(XDir, YDir, ZDir);
var vecLength = dir2.length();
var colorArray = colorgradient(vecLength);
// Normalize Vector Direction
dir2.normalize();
// set Vector Origin, Length
var YBase = vecArr.arrows[i].base.y;
var XBase = vecArr.arrows[i].base.x;
var ZBase = vecArr.arrows[i].base.z;
var origin2 = new THREE.Vector3(XBase, YBase, ZBase);
// Set color of vectors
var hex2 = new THREE.Color();
hex2.setRGB(colorArray[0], colorArray[1], colorArray[2]); // Value with gradient;
// check if arrows are needed to be added and push new arrows in array
if (oldVecArrayLength < vecArr.arrows.length) {
var arrowHelper2 = new THREE.ArrowHelper(dir2, origin2, dir2.length(), hex2);
vectorlist.push({
arrow: arrowHelper2
})
vectorfield.add(vectorlist[i].arrow)
console.log("Adding")
// else just update the present arrows with new values from json-file
} else {
vectorlist[i].arrow.visible = true;
vectorlist[i].arrow.position.set(XBase, YBase, ZBase);
vectorlist[i].arrow.setDirection(dir2);
vectorlist[i].arrow.setLength(dir2.length());
vectorlist[i].arrow.setColor(hex2);
console.log("Updating")
};
// look up if the length is exceedes the set limits and set arrow to specific color and shape
if (vecLength > arrowMaxLength){
vectorlist[i].arrow.setLength(nonArrowLength, nonArrowHeadLength, nonArrowHeadWidth)
vectorlist[i].arrow.setColor( new THREE.Color(maxColor));
};
if (vecLength < arrowMinLength){
vectorlist[i].arrow.setLength(nonArrowLength, nonArrowHeadLength, nonArrowHeadWidth)
vectorlist[i].arrow.setColor( new THREE.Color(minColor));
}
};
// set not needed arrowHelper objects invisible
if (oldVecArrayLength > vecArr.arrows.length){
for(var j = vecArr.arrows.length; j < oldVecArrayLength; j++){
vectorlist[j].arrow.visible = false
}
}
oldVecArrayLength = vecArr.arrows.length;
}
//////////////////////////////////////////////////////////////////////////////////
// add an object in the scene
//////////////////////////////////////////////////////////////////////////////////
setInterval(function(){
readJSON(vectFieldDat)
updateVectors(vecDataTransferHelper)
onRenderFcts.push(function(){
renderer.render( scene, camera );
})
}, 1000);
}, updateFrequency);
scene.add(vectorfield)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment