svghmi/bbox_intersect.ysl2
branchsvghmi
changeset 2873 022db76c3bff
parent 2872 83adf8859c55
child 2874 b67af0b8dc72
--- a/svghmi/bbox_intersect.ysl2	Mon Mar 16 18:27:49 2020 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,120 +0,0 @@
-// bbox_intersect.ysl2
-//
-// bounding boxes intersection tests
-
-// Rates 1D intersection of 2 segments A and B
-// described respectively with a0,a1 and b0,b1
-def "func:intersect_1d" {
-    // it is assumed that a1 > a0 and b1 > b0
-    param "a0";
-    param "a1";
-    param "b0";
-    param "b1";
-
-    const "d0", "$a0 >= $b0";
-    const "d1", "$a1 >= $b1";
-    choose {
-        when "not($d0) and $d1"
-            // b contained in a
-            //   a0<b0 b1<a1
-            // a +--------+
-            // b    +--+
-            result "3";
-        when "$d0 and not($d1)"
-            // a contained in b
-            //   b0<a0 a1<b1
-            // a    +--+
-            // b +--------+
-            result "2";
-        when "$d0 and $d1 and $a0 < $b1"
-            // a and b are overlapped 
-            //   b0<a0<b1<a1
-            // a    +-----+
-            // b +-----+
-            result "1";
-        when "not($d0) and not($d1) and $b0 < $a1"
-            // a and b are overlapped
-            //   a0<b0<a1<b1
-            // a +-----+
-            // b    +-----+
-            result "1";
-            // since orientation doesn't matter,
-            // rated same as previous symetrical overlapping
-        otherwise
-            result "0"; /* no intersection*/
-    }
-}
-
-
-// Rates intersection A and B areas described with x,y,w and h 
-// attributes passed as $a and $b parameters.
-// 
-// returns :
-// 0 - no intersection
-//            .-----.
-//    .-----. |    b|
-//    |     | |     |
-//    |     | '-----'
-//    |a    |
-//    '-----'
-//
-// 1 - overlapping
-//        .-----.
-//    .---|--. b|
-//    |   |  |  |
-//    |   '-----'
-//    |a     |
-//    '------'
-//
-// 2 - overlapping
-//        .-----.
-//        |  a  |
-//    .---|-----|---.
-//    |   '-----'   |
-//    | b           |
-//    '-------------'
-//
-// 3 - overlapping
-//        .-----.
-//        |  b  |
-//    .---|-----|---.
-//    |   '-----'   |
-//    | a           |
-//    '-------------'
-//
-// 4 - a contained in b
-//    .-------------.
-//    |   .-----.   |
-//    |   |  a  |   |
-//    |b  '-----'   |
-//    '-------------'
-//
-// 6 - overlapping
-//        .----.
-//        |   b|
-//    .---|----|---.
-//    |a  |    |   |
-//    '---|----|---'
-//        '----'
-//
-// 9 - b contained in a
-//    .-------------.
-//    |   .-----.   |
-//    |   |  b  |   |
-//    |a  '-----'   |
-//    '-------------'
-//
-def "func:intersect" {
-    param "a";
-    param "b";
-
-    const "x_intersect", "func:intersect_1d($a/@x, $a/@x+$a/@w, $b/@x, $b/@x+$b/@w)";
-
-    choose{
-        when "$x_intersect != 0"{
-            const "y_intersect", "func:intersect_1d($a/@y, $a/@y+$a/@h, $b/@y, $b/@y+$b/@h)";
-            result "$x_intersect * $y_intersect";
-        }
-        otherwise result "0";
-    }
-}