Add Intel section: Calculate possible destination of bogie
This commit is contained in:
parent
8d2788b318
commit
3b0559efe2
@ -21,7 +21,7 @@ $(document).ready(function() {
|
|||||||
removeEntity('arrow');
|
removeEntity('arrow');
|
||||||
lastInputBox = null;
|
lastInputBox = null;
|
||||||
$('#route_output').html("No route calculated");
|
$('#route_output').html("No route calculated");
|
||||||
var speed = {'speed': $('#speed').val(), 'unit':$ ('#speedunit option:selected').val() };
|
var speed = {'speed': $('#speed').val(), 'unit':$('#speedunit option:selected').val() };
|
||||||
populateRoutePlan( $('#pointa option:selected').text() , $('#pointb option:selected').text(),speed );
|
populateRoutePlan( $('#pointa option:selected').text() , $('#pointb option:selected').text(),speed );
|
||||||
|
|
||||||
|
|
||||||
@ -39,6 +39,18 @@ $(document).ready(function() {
|
|||||||
String.prototype.capitalize = function(lower) {
|
String.prototype.capitalize = function(lower) {
|
||||||
return (lower ? this.toLowerCase() : this).replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
|
return (lower ? this.toLowerCase() : this).replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
|
||||||
};
|
};
|
||||||
|
$('.rpcoord').blur(function() {
|
||||||
|
if(!$(this).val()) { $(this).val( $(this).attr("id") ) }
|
||||||
|
|
||||||
|
});
|
||||||
|
$('.rpcoord').focus(function() {
|
||||||
|
if($(this).val() == $(this).attr("id")) { $(this).val("") }
|
||||||
|
});
|
||||||
|
$('#calcpredict').click(function() {
|
||||||
|
$('#intel_predicted').html("");
|
||||||
|
var predicted = predictDestination(new THREE.Vector3(Number($('#x').val()),Number($('#y').val()),Number($('#z').val())),new THREE.Vector2(Number($('#azmuth').val()),Number($('#inclination').val())),$('#intel_frame option:selected').val());
|
||||||
|
$('#intel_predicted').html(predicted);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -65,6 +77,17 @@ function populateUserFields() {
|
|||||||
$('#pointa').html(option);
|
$('#pointa').html(option);
|
||||||
$('#pointb').html(option);
|
$('#pointb').html(option);
|
||||||
|
|
||||||
|
// Populate list of borders for intel frame selection
|
||||||
|
option = $('#intel_frame').html();
|
||||||
|
var borderlist = listobjects("borders");
|
||||||
|
|
||||||
|
for (var border in borderlist) {
|
||||||
|
if(borderlist[border].radius > 10) {
|
||||||
|
option += '<option value="'+ escapeHTML(border) + '">' + escapeHTML(border) + '</option>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('#intel_frame').html(option);
|
||||||
|
|
||||||
}
|
}
|
||||||
function populateFBSelect() {
|
function populateFBSelect() {
|
||||||
//Populate find by select dropdown
|
//Populate find by select dropdown
|
||||||
|
@ -210,7 +210,7 @@ function listobjects(type) {
|
|||||||
function zoomfocus(name) {
|
function zoomfocus(name) {
|
||||||
|
|
||||||
|
|
||||||
var zoomto = grabPositionByName(name)
|
var zoomto = grabPositionByName(name);
|
||||||
if (zoomto != null) {
|
if (zoomto != null) {
|
||||||
controls.target.x = zoomto.x;
|
controls.target.x = zoomto.x;
|
||||||
controls.target.y = zoomto.y;
|
controls.target.y = zoomto.y;
|
||||||
@ -365,3 +365,35 @@ function calcBestRoute(pointa,pointb) {
|
|||||||
|
|
||||||
return route[route_keys_sorted[0]];
|
return route[route_keys_sorted[0]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function predictDestination(loc,heading,frame) {
|
||||||
|
removeEntity('arrow');
|
||||||
|
if(frame != "Galactic") {
|
||||||
|
var objFrame = grabPositionByName(frame);
|
||||||
|
} else {
|
||||||
|
var objFrame = new THREE.Vector3(0,0,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(frame)
|
||||||
|
var adjLoc = loc.clone();
|
||||||
|
adjLoc = adjLoc.add(objFrame);
|
||||||
|
var headingvec = new THREE.Vector3(heading.x, heading.y, 300);
|
||||||
|
var farpoint = calcEndpointByHeading(headingvec,adjLoc);
|
||||||
|
drawline(adjLoc,farpoint);
|
||||||
|
var directionvector = farpoint.sub(adjLoc);
|
||||||
|
var ray = new THREE.Raycaster(adjLoc, directionvector.clone().normalize());
|
||||||
|
scene.updateMatrixWorld();
|
||||||
|
var intersects = ray.intersectObjects(scene.children,false);
|
||||||
|
var correctedintersections=[];
|
||||||
|
if (intersects[0]) {
|
||||||
|
intersects.forEach(function(obj) {
|
||||||
|
if (obj.object.geometry.boundingSphere.radius != 'undefined' && obj.object.geometry.boundingSphere.radius < 2) {
|
||||||
|
correctedintersections.push(obj.object.name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return correctedintersections[0];
|
||||||
|
}
|
||||||
|
return "Unable to predict"
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -117,6 +117,7 @@
|
|||||||
<ul class="wvg-navbar">
|
<ul class="wvg-navbar">
|
||||||
<li class="wvg-tablink wvg-tab-active" onclick="openTab(event,'Find');">Find</li>
|
<li class="wvg-tablink wvg-tab-active" onclick="openTab(event,'Find');">Find</li>
|
||||||
<li class="wvg-tablink" onclick="openTab(event,'Plan');">Plan</li>
|
<li class="wvg-tablink" onclick="openTab(event,'Plan');">Plan</li>
|
||||||
|
<li class="wvg-tablink" onclick="openTab(event,'Intel');">Intel</li>
|
||||||
<li class="wvg-tablink" onclick="openTab(event,'Info');">Info</li>
|
<li class="wvg-tablink" onclick="openTab(event,'Info');">Info</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="wvg-tools wvg-first" id="Find">
|
<div class="wvg-tools wvg-first" id="Find">
|
||||||
@ -164,6 +165,27 @@
|
|||||||
Distance: <b id="cal_dist">Unknown</b><br />
|
Distance: <b id="cal_dist">Unknown</b><br />
|
||||||
ETA @ <b id="cal_speed">Unknown</b> : <b id="cal_eta">Unknown</b>
|
ETA @ <b id="cal_speed">Unknown</b> : <b id="cal_eta">Unknown</b>
|
||||||
</span>
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="wvg-tools" id="Intel">
|
||||||
|
<span class="tool-header"> Route Prediction </span>
|
||||||
|
<span>
|
||||||
|
<input type="text" class="rpcoord" id="x" value="x" style="width:3vw;">
|
||||||
|
<input type="text" class="rpcoord" id="y" value="y" style="width:3vw;">
|
||||||
|
<input type="text" class="rpcoord" id="z" value="z" style="width:3vw;"><br /><br />
|
||||||
|
<input type="text" class="rpcoord" id="azmuth" value="azmuth" style="width:3.1vw;"><label for='inclination'> mark </label>
|
||||||
|
<input type="text" class="rpcoord" id="inclination" value="inclination" style="width:3.5vw;"> <br /><br />
|
||||||
|
|
||||||
|
<label for="intel_frame">Coordinate Frame</label>
|
||||||
|
<select id="intel_frame">
|
||||||
|
<option val="Galactic"> Galactic </option>
|
||||||
|
</select>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
Perdicted Destination: <b id="intel_predicted"></b>
|
||||||
|
|
||||||
|
<button id="calcpredict" class="btn">Predict</button>
|
||||||
|
</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="wvg-tools" id="Info">
|
<div class="wvg-tools" id="Info">
|
||||||
<span> This tool was designed by Frey @ ATSMUSH. It is based on MapView for ATS with data used from the Navcomp MUSHClient plugin with permission. </span>
|
<span> This tool was designed by Frey @ ATSMUSH. It is based on MapView for ATS with data used from the Navcomp MUSHClient plugin with permission. </span>
|
||||||
|
Loading…
Reference in New Issue
Block a user