@@ -38,29 +38,34 @@ trait CrossingGenerator extends Adjacencies { this: RuleGenerator =>
3838 Rules += main~ WE ~ EW | (base ~> main)~ WE ~ EW & orient(minor~ NWC ) // OxD T 2
3939 Rules += main~ NE ~ EN | (base ~> main)~ WS ~ SW & orient(minor~ NC ) // DxO T 1
4040 Rules += main~ NE ~ EN | (base ~> main)~ WS ~ SW & orient(minor~ SC ) // DxO T 2
41- Rules += main~ SE ~ ES & minor~ WC ~ CW | (base ~> main)~ WN ~ NW & orient(minor~ WC ) // DxO T 1-2
42- Rules += main~ SE ~ ES & minor~ CE ~ EC | (base ~> main)~ WN ~ NW & orient(minor~ CE ) // DxO T 2-1
43- Rules += main~ SE ~ ES & minor~ CE ~ EC | base~ WN ~ NW & minor~ WE ~ EW | main~ SE ~ ES & minor~ CE ~ EC | main~ WN ~ NW & minor~ CE ~ EC // DxO T 2-1 Alt
41+ Rules += main~ ES ~ SE & minor~ WC ~ CW | (base ~> main)~ NW ~ WN & orient(minor~ WC ) // DxO T 1-2
42+ Rules += main~ ES ~ SE & minor~ CE ~ EC | (base ~> main)~ NW ~ WN & orient(minor~ CE ) // DxO T 2-1
43+ Rules += main~ ES ~ SE & minor~ WE ~ EW | main~ NW ~ WN | main~ ES ~ SE & minor~ WC ~ CW | main~ NW ~ WN & orient(minor~ WC ) // DxO T 1-2 Stability
44+ Rules += main~ ES ~ SE & minor~ WE ~ EW | base~ NW ~ WN | main~ ES ~ SE & minor~ WC ~ CW | main~ NW ~ WN & orient(minor~ WC ) // DxO T 1-2 Stability
45+ Rules += main~ ES ~ SE & minor~ CE ~ EC | base~ NW ~ WN & minor~ WE ~ EW | main~ ES ~ SE & minor~ CE ~ EC | main~ NW ~ WN & minor~ CE ~ EC // DxO T 2-1 Alt
4446 Rules += main~ NE ~ EN | (base ~> main)~ WS ~ SW & orient(minor~ ESC ) // DxD T 1
4547 Rules += main~ NE ~ EN | (base ~> main)~ WS ~ SW & orient(minor~ SEC ) // DxD T 2
4648 Rules += main~ SE ~ ES & minor~ NEC ~ CEN | (base ~> main)~ WN ~ NW & orient(minor~ WSC ) // DxD T 1-2
4749 Rules += main~ NE ~ EN & minor~ ESC ~ CSE | (base ~> main)~ WS ~ NS & orient(minor~ CWN ) // DxD T 2-1
4850 Rules += main~ SE ~ ES & minor~ NE ~ EN | base~ WN ~ NW & minor~ WSC ~ CSW | main~ SE ~ ES & minor~ NEC ~ CEN | main~ WN ~ NW & minor~ WSC ~ CSW // DxD T 2-1 Alt
4951 Rules += main~ SE ~ ES & minor~ NEC ~ CEN | base~ WN ~ NW | main~ SE ~ ES & minor~ NEC ~ CEN | main~ WN ~ NW & minor~ WSC ~ CSW // DxD T 1-2 Alt
52+ Rules += main~ SE ~ ES & minor~ NEC ~ CEN | main~ WN ~ NW | main~ SE ~ ES & minor~ NEC ~ CEN | main~ WN ~ NW & minor~ WSC ~ CSW // DxD T 1-2 Alt
5053
5154 if (minor != Avenue ) {
5255 Rules += main~ WE ~ EW | (base ~> main)~ WC ~ CW & orient(minor~ SE ) // OxD T End 1
5356 Rules += main~ WC ~ CW & minor~ ES ~ SE | (base ~> main)~ WC ~ CW & orient(minor~ NW ) // OxD T End 2
5457 Rules += main~ WE ~ EW & minor~ ES ~ SE | base~ WC ~ CW & minor~ WN ~ NW | main~ WC ~ CW & minor~ ES ~ SE | main~ WC ~ CW & minor~ WN ~ NW // OxD T End 2 Alt
5558 Rules += main~ WE ~ EW & minor~ ES ~ SE | minor~ WN ~ NW | main~ WC ~ CW & minor~ ES ~ SE | main~ WC ~ CW & minor~ WN ~ NW // OxD T End 3 Alt
5659 Rules += main~ WC ~ CW & minor~ ES ~ SE | minor~ WN ~ NW | main~ WC ~ CW & minor~ ES ~ SE | main~ WC ~ CW & minor~ WN ~ NW // OxD T End 4 Alt
60+ // Rules += main~EW~WE & minor~ES~SE | minor~WN~NW | main~CW~WC & minor~ES~SE | main~CW~WC & minor~WN~NW // OxD T End 5 Alt
61+ // Rules += main~CW~WC & minor~ES~SE | minor~WN~NW | main~CW~WC & minor~ES~SE | main~CW~WC & minor~WN~NW // OxD T End 6 Alt
5762 Rules += main~ (0 ,0 ,11 ,3 ) | base~ WNC ~ CNW & minor~ NS ~ SN | main~ (0 ,0 ,11 ,3 ) | main~ WNC ~ CNW & minor~ NS ~ SN // DxO T End 1
5863 Rules += main~ SW ~ WS | base~ WNC ~ CNW & minor~ NS ~ SN | main~ (0 ,0 ,11 ,3 ) | main~ WNC ~ CNW & minor~ NS ~ SN // DxO T End 1 Alt
5964 Rules += main~ SE ~ ES | (base ~> main)~ WNC ~ CNW & orient(minor~ EN ) // DxD T End 1
60- Rules += main~ CEN ~ NEC & minor~ SE ~ ES | (base ~> main)~ WSC ~ CSW & orient(minor~ WN ) // DxD T End 2
61- Rules += main~ EN ~ NE & minor~ SE ~ ES | base~ WSC ~ CSW & minor~ WN ~ NW | main~ CEN ~ NEC & minor~ SE ~ ES | main~ WSC ~ CSW & minor~ WN ~ NW // DxD T End 2 Alt
62- Rules += main~ EN ~ NE & minor~ SE ~ ES | minor ~ WN ~ NW | main~ CEN ~ NEC & minor~ SE ~ ES | main~ WSC ~ CSW & minor~ WN ~ NW // DxD T End 2 Alt 2
63- Rules += main~ CEN ~ NEC & minor~ SE ~ ES | minor ~ WN ~ NW | main~ CEN ~ NEC & minor~ SE ~ ES | main~ WSC ~ CSW & minor~ WN ~ NW // DxD T End 2 Alt 3
65+ Rules += main~ CEN ~ NEC & minor~ SE ~ ES | (base ~> main)~ CSW ~ WSC & orient(minor~ WN ) // DxD T End 2
66+ Rules += main~ EN ~ NE & minor~ SE ~ ES | base~ CSW ~ WSC & minor~ WN ~ NW | main~ CEN ~ NEC & minor~ SE ~ ES | main~ CSW ~ WSC & minor~ WN ~ NW // DxD T End 2 Alt
67+ Rules += main~ EN ~ NE & minor~ SE ~ ES | main ~ SW ~ WS | main~ CEN ~ NEC & minor~ SE ~ ES | main~ CSW ~ WSC & minor~ SW ~ WS // DxD T End 2 Alt 2
68+ Rules += main~ CEN ~ NEC & minor~ SE ~ ES | base ~ SW ~ WS | main~ CEN ~ NEC & minor~ SE ~ ES | main~ CSW ~ WSC & minor~ SW ~ WS // DxD T End 2 Alt 3
6469 }
6570 if (minor == Avenue ) {
6671 Rules += main~ WE ~ EW | (base ~> main)~ WE ~ EW & minor~ (0 ,0 ,3 ,0 ) // OxD T 1
@@ -82,6 +87,33 @@ trait CrossingGenerator extends Adjacencies { this: RuleGenerator =>
8287 Rules += main~ NE ~ EN & minor~ EC | base~ WS ~ SW | main~ NE ~ EN & minor~ EC | main~ WS ~ SW & minor~ EC // DxO T-Thru 4-3 Stability 1
8388 Rules += main~ NE ~ EN & minor~ EC | main~ WS ~ SW | main~ NE ~ EN & minor~ EC | main~ WS ~ SW & minor~ EC // DxO T-Thru 4-3 Stability 2
8489 Rules += main~ NE ~ EN | base~ WS ~ SW & minor~ EC | main~ NE ~ EN & minor~ EC | main~ WS ~ SW & minor~ EC // DxO T-Thru 4-3 Stability 3
90+ Rules += main~ NE ~ EN | base~ WS ~ SW & minor~ EC | main~ NE ~ EN & minor~ EC | main~ WS ~ SW & minor~ EC // DxO T-Thru 4-3 Stability 4
91+ if (main != Owr3 && main != Tla3 ) {
92+ // Tla3 and Owr3 handled in manual supplement for time being
93+ Rules += main~ SE ~ ES | (base ~> main)~ WN ~ NW & minor~ CNE // DxD T-Thru 1a1
94+ // Rules += main~NE~EN | (base ~> main)~WS~SW & minor~ESC // DxD T-Thru 1a2
95+ Rules += main~ NE ~ EN & minor~ CES | (base ~> main)~ WS ~ SW & minor~ (1 ,0 ,0 ,3 ) // DxD T-Thru 1a1-1b1
96+ // Rules += main~SE~ES & minor~NEC | (base ~> main)~WN~NW & minor~(3,1,0,0) // DxD T-Thru 1a2-1b2
97+ Rules += main~ NE ~ EN & minor~ ES | base~ WS ~ SW & minor~ (1 ,0 ,0 ,3 ) | main~ NE ~ EN & minor~ CES | main~ WS ~ SW & minor~ (1 ,0 ,0 ,3 ) // DxD T-Thru 1a-1b Stability
98+ // Rules += main~SE~ES & minor~(0,0,3,1) | (base ~> main)~WN~NW & minor~SWC // DxD T-Thru 1b-1a
99+ Rules += main~ SE ~ ES & minor~ (0 ,0 ,3 ,1 ) | base~ WN ~ NW & minor~ SW | % | main~ WN ~ NW & minor~ SWC // DxD T-Thru 1b-1a Stability 1
100+ Rules += main~ NE ~ EN & minor~ (0 ,3 ,1 ,0 ) | base~ WS ~ SW & minor~ WN | % | main~ WS ~ SW & minor~ CWN // DxD T-Thru 1b-1a Stability 2
101+ Rules += Tla3 ~ SE ~ ES & minor~ (0 ,0 ,3 ,1 ) | Road ~ WN ~ NW & minor~ SW | % | Tla3 ~ WN & minor~ SWC // DxD T-Thru 1b-1a Stability 1
102+ Rules += Tla3 ~ NE ~ EN & minor~ (0 ,3 ,1 ,0 ) | Road ~ WS ~ SW & minor~ WN | % | Tla3 ~ SW & minor~ CWN // DxD T-Thru 1b-1a Stability 2
103+ Rules += main~ SE ~ ES | (base ~> main)~ WN ~ NW & minor~ NEC // DxD T-Thru 2a
104+ // Rules += main~NE~EN | (base ~> main)~WS~SW & minor~CES // DxD T-Thru 2a Alt
105+ Rules += main~ SE ~ ES & minor~ (3 ,1 ,0 ,0 ) | (base ~> main)~ WN ~ NW & minor~ CSW // DxD T-Thru 2b-2a
106+ Rules += main~ NE ~ EN & minor~ (1 ,0 ,0 ,3 ) | (base ~> main)~ WS ~ SW & minor~ WNC // DxD T-Thru 2b-2a Alt
107+ Rules += main~ SE ~ ES & minor~ (3 ,1 ,0 ,0 ) | base~ WN ~ NW | % | main~ WN ~ NW & minor~ CSW // DxD T-Thru 2b-2a
108+ Rules += main~ NE ~ EN & minor~ (1 ,0 ,0 ,3 ) | base~ WS ~ SW | % | main~ WS ~ SW & minor~ WNC // DxD T-Thru 2b-2a Alt
109+ Rules += main~ SE ~ ES & minor~ (3 ,1 ,0 ,0 ) | main~ WN ~ NW | % | main~ WN ~ NW & minor~ CSW // DxD T-Thru 2b-2a
110+ Rules += main~ NE ~ EN & minor~ (1 ,0 ,0 ,3 ) | main~ WS ~ SW | % | main~ WS ~ SW & minor~ WNC // DxD T-Thru 2b-2a Alt
111+
112+ Rules += main~ SE ~ ES & minor~ CNE | (base ~> main)~ WN ~ NW & minor~ (0 ,0 ,3 ,1 ) // DxD T-Thru 2a-2b
113+ Rules += main~ SE ~ ES & minor~ NE | base~ WN ~ NW & minor~ (0 ,0 ,3 ,1 ) | main~ SE ~ ES & minor~ CNE | main~ WN ~ NW & minor~ (0 ,0 ,3 ,1 ) // DxD T-Thru 2a-2b Stability
114+ Rules += main~ NE ~ EN & minor~ ESC | (base ~> main)~ WS ~ SW & minor~ (0 ,3 ,1 ,0 ) // DxD T-Thru 2a-2b Alt
115+ // Rules += main~NE~EN & minor~ES | base~WS~SW & minor~(0,3,1,0) | main~NE~EN & minor~ESC | main~WS~SW & minor~(0,3,1,0) // DxD T-Thru 2a-2b Alt Stability
116+ }
85117 Rules += main~ WE ~ EW | (base ~> main)~ WC ~ CW & orient(minor~ ES ) // OxD T End-Short 1
86118 Rules += main~ WC ~ CW & minor~ ES | (base ~> main)~ WC ~ CW & minor~ SharedDiagRight // OxD T End-Short 2
87119 Rules += main~ WE ~ EW & minor~ ES | (base ~> main)~ WC ~ CW & minor~ SharedDiagRight // OxD T End-Short 2 Alt
@@ -103,6 +135,17 @@ trait CrossingGenerator extends Adjacencies { this: RuleGenerator =>
103135 Rules += main~ EW & minor~ NS | (base ~> main)~ CW & minor~ SN // OxO T End 1/Long T
104136 Rules += main~ WE & minor~ NS | (base ~> main)~ WC & minor~ SN // OxO T End 2/Long T
105137 }
138+
139+ if (main.isNwm && minor.isNwmTriple) withResolvableRulesOnly { // T intersections are not defined for all network combinations
140+ Rules += main~ WE | (base ~> main)~ WE & orient(minor~ CS ) // OxO T 1
141+ Rules += main~ WE | (base ~> main)~ WE & orient(minor~ NC ) // OxO T 2
142+ // Rules += main~WE & minor~NC | (base ~> main)~WE & minor~CN // OxO T Tile 1-2
143+ // Rules += main~EW & minor~CS | (base ~> main)~EW & minor~SC // OxO T Tile 2-1
144+ Rules += main~ EW & Tla7m ~ NS | (base ~> main)~ CW & minor~ SN // OxO T End 1/Long T
145+ Rules += main~ WE & Tla7m ~ NS | (base ~> main)~ WC & minor~ SN // OxO T End 2/Long T
146+ Rules += main~ EW & Ave6m ~ NS | (base ~> main)~ CW & minor~ SN // OxO T End 1/Long T
147+ Rules += main~ WE & Ave6m ~ NS | (base ~> main)~ WC & minor~ SN // OxO T End 2/Long T
148+ }
106149 // Shared diagonals on minor are not relevant here since the shared diagonal is an inner tile (i.e. without an edge).
107150 }
108151 if (hasRightShoulder(minor)) entryCode(identity)
@@ -127,7 +170,9 @@ trait CrossingGenerator extends Adjacencies { this: RuleGenerator =>
127170 Rules += main~ NE ~ EN & minor~ CS ~ SC | (base ~> main)~ WS ~ SW // DxO T 1
128171 Rules += main~ NE ~ EN & minor~ NC ~ CN | (base ~> main)~ WS ~ SW // DxO T 2
129172 Rules += main~ SE ~ ES & minor~ WSC ~ CSW | (base ~> main)~ WN ~ NW // DxD T 1
130- Rules += main~ SE ~ ES & minor~ SWC ~ CWS | (base ~> main)~ WN ~ NW // DxD T 2
173+ Rules += main~ SE ~ ES & minor~ CWS ~ SWC | (base ~> main)~ WN ~ NW // DxD T 2
174+ Rules += main~ ES ~ SE & minor~ WSC ~ CSW | (base ~> main)~ NW ~ WN // DxD T 1b
175+ Rules += main~ ES ~ SE & minor~ CWS ~ SWC | (base ~> main)~ NW ~ WN // DxD T 2b
131176 }
132177 // if (main.isNwm && minor.isNwmDual) withResolvableRulesOnly { // T intersections are not defined for all network combinations
133178 // Rules += main~WE | (base ~> main)~WE & orient(minor~CS) // OxO T 1
0 commit comments