Skip to content

Instantly share code, notes, and snippets.

@iriyak
Last active November 5, 2017 15:58
Show Gist options
  • Save iriyak/9eeb6ecc2682a775102eebe85973ddab to your computer and use it in GitHub Desktop.
Save iriyak/9eeb6ecc2682a775102eebe85973ddab to your computer and use it in GitHub Desktop.
JS like Pseudo code to define a Line Of Sight in Air Power Game System (CoA)
function LOS(target, aircraft, obstacle) {
return (ConditionA(target, aircraft, obstacle)
|| ConditionB(target, aircraft, obstacle)
|| ConditionC(target, aircraft, obstacle))
&&
!(ConditionW(target, aircraft, obstacle)
|| ConditionX(target, aircraft, obstacle)
|| ConditionY(target, aircraft, obstacle)
|| ConditionZ(target, aircraft, obstacle))
}
function ConditionA(target, aircraft, obstacle) {
return !obstacle
&& aircraft.altitude >= target.altitude;
}
function ConditionB(target, aircraft, obstacle) {
return obstacle
&& obstacle.distance > (aircraft.distance - target.distance) / 2
&& aircraft.altitude >= obstacle.altitude + 2;
}
function ConditionC(target, aircraft, obstacle) {
return obstacle
&& obstacle.distance <= (aircraft.distance - target.distance) / 2
&& aircraft.altitude >= obstacle.altitude + 4;
}
function ConditionW(target, aircraft, obstacle) {
return obstacle
&& target.altitude < obstacle.altitude
&& aircraft.altitude <= obstacle.altitude;
}
function ConditionX(target, aircraft, obstacle) {
return obstacle
&& target.altitude == obstacle.altitude
&& !obstacle.isPartOfDownwardSlope
&& aircraft.altitude < obstacle.altitude;
}
function ConditionY(target, aircraft, obstacle) {
return obstacle
&& target.altitude > obstacle.altitude
&& !obstacle.isPartOfRisingSlope
&& Math.abs(aircraft.distance - obstacle.distance) <= 2
&& (aircraft.TLevelFlight
|| obstacle.altitude - aircraft.altitude >= target.altitude - obstacle.altitude);
}
function ConditionZ(target, aircraft, obstacle) {
return aircraft.altitude == target.altitude
&& !wood
&& !urban
&& !builtup
&& !ridgelineAtTheSameAltitude;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment