Index: Makefile =================================================================== --- Makefile (revision 541) +++ Makefile (revision 542) @@ -1,5 +1,5 @@ DPI=300 -PICS = 2net.png 3net.png passthru1.png passthru2.png passthru3.png tri.png +PICS = 2net.png 3net.png passthru1.png passthru2.png passthru3.png tri.png uturn.png all: $(PICS) Index: trbs.html =================================================================== --- trbs.html (revision 541) +++ trbs.html (revision 542) @@ -83,7 +83,16 @@ be any number of crossings, from zero up, but any time the 2net is crossing a triangulation edge, there must be a crossing created.
-Note: multiple crossing points of the same 2net-edge can occur [TODO: drawing]. +Note: multiple crossing points of the same 2net-edge can occur, as shown on +Figure 3. +
+
+
Figure 3: the blue net between A and B need to make detours around + other (blue) nets. On the way, it crosses some edges (marked with red) + twice, at different locations. +
+
Each 2net is specified by a starting and an ending triangulation vertex and an ordered doubly linked list of crossings. Which @@ -140,7 +149,7 @@
-
Figure 3: edge-to-edge visibility in a triangle; annotations are +
Figure 4: edge-to-edge visibility in a triangle; annotations are drawn with red, existing paths with blue
-The algorithm for determining visibility (e.g. on Figure 3) is: +The algorithm for determining visibility (e.g. on Figure 4) is:
-
Figure 4: blue and green nets starting from triangle vertices, still +
Figure 5: blue and green nets starting from triangle vertices, still S2 finds its target edge point
-On Figure 4, a CW search from S2 first reaches vertex PA then will jump to the edge PA-PC, +On Figure 5, a CW search from S2 first reaches vertex PA then will jump to the edge PA-PC, which is the target edge.
Case 2: -On Figure 4, tracing CCW from S2: because of 3b., the search reaches target edge after +On Figure 5, tracing CCW from S2: because of 3b., the search reaches target edge after tracing S2's edge, vertex PB and the blue path.
Case 3: visibility blocked @@ -206,10 +215,10 @@
-
Figure 5: target edge not visible from S2 because of an existing path +
Figure 6: target edge not visible from S2 because of an existing path
-On Figure 5, starting from S2, tracing CCW: trace S2's edge to PB, then switch edge +On Figure 6, starting from S2, tracing CCW: trace S2's edge to PB, then switch edge by 3c, bumping into the blue path by 4, tracing it to edge PA-PB; this edge is the edge S2 is on. By 5, return failure. Index: uturn.lht =================================================================== --- uturn.lht (nonexistent) +++ uturn.lht (revision 542) @@ -0,0 +1,587 @@ +ha:pcb-rnd-board-v7 { + + li:styles { + ha:normal { + diameter = 2.2mm + text_scale = 200 + text_thick = 1.0mm + thickness = 1.0mm + hole = 2.0mm + clearance = 20.0mil + } + ha:thick { + diameter = 2.2mm + text_scale = 0 + text_thick = 0.0 + thickness = 1.7mm + hole = 1.0mm + clearance = 20.0mil + } + ha:thin { + diameter = 137.8mil + text_scale = 0 + text_thick = 0.0 + thickness = 0.35mm + hole = 47.24mil + clearance = 25.0mil + } + ha:realthin { + diameter = 275.6mil + text_scale = 100 + text_thick = 0.0 + thickness = 0.25mm + hole = 47.24mil + clearance = 25.0mil + } + } + + ha:meta { + ha:size { + thermal_scale = 0.500000 + x = 51.0mm + y = 40.0mm + } + ha:grid { + spacing = 0.25mm + offs_x = 0.0 + offs_y = 0.0 + } + } + + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=31.5mil; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=2.0mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=2.0mm; } + ha:combining { } + ha:layer_mask { + bottom = 1 + copper = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=2.0mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + } + } + } + + ha:ps_proto_v6.1 { + hdia=47.24mil; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=137.8mil; } + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=137.8mil; } + ha:combining { } + ha:layer_mask { + bottom = 1 + copper = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=137.8mil; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + } + } + } + + ha:ps_proto_v6.2 { + hdia=2.0mm; hplated=1; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=2.2mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=2.2mm; } + ha:combining { } + ha:layer_mask { + bottom = 1 + copper = 1 + } + clearance=0.0 + } + + ha:ps_shape_v4 { + ha:ps_circ { x=0.0; y=0.0; dia=2.2mm; } + ha:combining { } + ha:layer_mask { + copper = 1 + intern = 1 + } + clearance=0.0 + } + } + } + } + + li:objects { + } + li:layers { + + ha:triangulation { + lid=0 + group=3 + ha:combining { } + + li:objects { + ha:line.48 { + x1=1.0mm; y1=1.0mm; x2=1.0mm; y2=38.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.51 { + x1=1.0mm; y1=38.0mm; x2=49.0mm; y2=38.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.54 { + x1=49.0mm; y1=38.0mm; x2=49.0mm; y2=1.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.57 { + x1=49.0mm; y1=1.0mm; x2=1.0mm; y2=1.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.75 { + x1=1.0mm; y1=1.0mm; x2=3.0mm; y2=16.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.78 { + x1=3.0mm; y1=16.0mm; x2=1.0mm; y2=38.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.81 { + x1=1.0mm; y1=38.0mm; x2=25.0mm; y2=33.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.84 { + x1=25.0mm; y1=33.0mm; x2=49.0mm; y2=38.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.87 { + x1=49.0mm; y1=38.0mm; x2=46.0mm; y2=20.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.90 { + x1=46.0mm; y1=20.0mm; x2=49.0mm; y2=1.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.93 { + x1=49.0mm; y1=1.0mm; x2=25.0mm; y2=3.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.96 { + x1=25.0mm; y1=3.0mm; x2=1.0mm; y2=1.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.99 { + x1=1.0mm; y1=1.0mm; x2=16.0mm; y2=20.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.102 { + x1=16.0mm; y1=20.0mm; x2=3.0mm; y2=16.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.105 { + x1=16.0mm; y1=20.0mm; x2=1.0mm; y2=38.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.108 { + x1=16.0mm; y1=20.0mm; x2=25.0mm; y2=33.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.111 { + x1=16.0mm; y1=20.0mm; x2=31.0mm; y2=16.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.114 { + x1=25.0mm; y1=3.0mm; x2=31.0mm; y2=16.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.117 { + x1=25.0mm; y1=33.0mm; x2=31.0mm; y2=16.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.120 { + x1=31.0mm; y1=16.0mm; x2=46.0mm; y2=20.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.123 { + x1=31.0mm; y1=16.0mm; x2=49.0mm; y2=38.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.126 { + x1=31.0mm; y1=16.0mm; x2=49.0mm; y2=1.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.129 { + x1=16.0mm; y1=20.0mm; x2=25.0mm; y2=3.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + } + color = {#757575} + } + + ha:ratlines { + lid=1 + group=4 + ha:combining { } + + li:objects { + } + color = {#d3a232} + } + + ha:wires { + lid=2 + group=5 + ha:combining { } + + li:objects { + ha:line.259 { + x1=3.0mm; y1=16.0mm; x2=10.5mm; y2=13.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.262 { + x1=10.5mm; y1=13.0mm; x2=19.75mm; y2=13.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.265 { + x1=19.75mm; y1=13.0mm; x2=30.5mm; y2=14.5mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.268 { + x1=30.5mm; y1=14.5mm; x2=32.25mm; y2=15.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.271 { + x1=32.25mm; y1=15.0mm; x2=32.5mm; y2=16.25mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.274 { + x1=32.5mm; y1=16.25mm; x2=32.25mm; y2=17.5mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.277 { + x1=32.25mm; y1=17.5mm; x2=29.75mm; y2=19.5mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.292 { + x1=29.75mm; y1=19.5mm; x2=22.25mm; y2=18.25mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.295 { + x1=22.25mm; y1=18.25mm; x2=17.25mm; y2=17.75mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.298 { + x1=17.25mm; y1=17.75mm; x2=14.5mm; y2=18.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.301 { + x1=14.5mm; y1=18.0mm; x2=13.25mm; y2=19.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.304 { + x1=13.25mm; y1=19.0mm; x2=1.0mm; y2=37.75mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.307 { + x1=31.0mm; y1=16.0mm; x2=18.75mm; y2=15.25mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.310 { + x1=18.75mm; y1=15.25mm; x2=12.75mm; y2=15.5mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.313 { + x1=12.75mm; y1=15.5mm; x2=8.5mm; y2=17.75mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.316 { + x1=8.5mm; y1=17.75mm; x2=2.75mm; y2=18.5mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.319 { + x1=16.0mm; y1=20.0mm; x2=28.25mm; y2=24.25mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.322 { + x1=28.25mm; y1=24.25mm; x2=37.25mm; y2=23.75mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.325 { + x1=37.25mm; y1=23.75mm; x2=46.0mm; y2=20.0mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.337 { + x1=2.75mm; y1=18.5mm; x2=1.75mm; y2=11.75mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.340 { + x1=1.75mm; y1=11.75mm; x2=1.0mm; y2=1.25mm; thickness=0.35mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + } + color = {#104e8b} + } + + ha:annotation { + lid=3 + group=6 + ha:combining { } + + li:objects { + ha:line.334 { + x1=9.25mm; y1=11.5mm; x2=15.0mm; y2=18.75mm; thickness=0.15mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:line.343 { + x1=20.75mm; y1=11.0mm; x2=16.5mm; y2=19.0mm; thickness=0.25mm; clearance=50.0mil; + ha:flags { + clearline=1 + } + } + ha:text.346 { + string=A; x=3.25mm; y=13.75mm; scale=100; fid=0; + ha:flags { + clearline=1 + } + rot = 0.000000 + } + ha:text.347 { + string=B; x=1.0mm; y=38.5mm; scale=100; fid=0; + ha:flags { + clearline=1 + } + rot = 0.000000 + } + } + color = {#cd3700} + } + } + } + + ha:layer_stack { + li:groups { + ha:0 { + name = grp_4 + ha:type { substrate=1; intern=1; } + li:layers { } + ha:attributes { + thickness={0.7375mm } + } + } + ha:1 { + name = grp_6 + ha:type { substrate=1; intern=1; } + li:layers { } + ha:attributes { + thickness={0.125mm } + } + } + ha:2 { + name = grp_8 + ha:type { substrate=1; intern=1; } + li:layers { } + ha:attributes { + thickness={0.7375mm } + } + } + ha:3 { + name = top-doc + ha:type { top=1; doc=1; } + li:layers { 0; } + ha:attributes { + init-invis=0 + } + purpose = fab + } + ha:4 { + name = top-doc + ha:type { top=1; doc=1; } + li:layers { 1; } + ha:attributes { + init-invis=0 + } + purpose = fab + } + ha:5 { + name = top-doc + ha:type { top=1; doc=1; } + li:layers { 2; } + ha:attributes { + init-invis=0 + } + purpose = fab + } + ha:6 { + name = top-doc + ha:type { top=1; doc=1; } + li:layers { 3; } + ha:attributes { + init-invis=0 + } + purpose = fab + } + } + } + li:pcb-rnd-conf-v1 { + ha:overwrite { + ha:design { + text_font_id = 0 + text_scale = 100 + via_thickness = 275.60 mil + via_drilling_hole = 47.24 mil + text_thickness = 0 + line_thickness = 250.00 um + clearance = 25.00 mil + } + ha:editor { + grid_unit = mm + grids_idx = 10 + grid = 250.00 um + buffer_number = 0 + all_direction_lines = true + rubber_band_keep_midlinedir = true + rubber_band_mode = true + } + } + } + ha:pixmaps { + } +} Index: uturn.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: uturn.png =================================================================== --- uturn.png (nonexistent) +++ uturn.png (revision 542) Property changes on: uturn.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property