Mikolaj Wielgus
|
394510de8d
|
layout: Add contracts for node and edge counts
|
2023-09-16 18:24:57 +02:00 |
Mikolaj Wielgus
|
7d2cff9004
|
route: Add contracts for path length
|
2023-09-15 22:48:51 +02:00 |
Mikolaj Wielgus
|
c94a4c716a
|
draw: Add contracts for node counts
|
2023-09-15 22:10:29 +02:00 |
Mikolaj Wielgus
|
1a271cd89c
|
Add `node_count == size` invariant for `Layout`
|
2023-09-15 01:30:23 +02:00 |
Mikolaj Wielgus
|
23311122b4
|
draw: Fix on-fail cleanup when drawing segbend
|
2023-09-05 07:51:27 +02:00 |
Mikolaj Wielgus
|
05fc42aa38
|
draw: Change direction depending on chosen guide tangent
|
2023-09-05 06:02:11 +02:00 |
Mikolaj Wielgus
|
f88636057f
|
draw: Choose the shortest guide tangent
|
2023-09-05 05:51:21 +02:00 |
Mikolaj Wielgus
|
49038a4ddb
|
Don't forget to reinsert bend into R-tree if bend extension fails
|
2023-09-05 04:23:26 +02:00 |
Mikolaj Wielgus
|
5f37ff7616
|
Unroute path whose routing failed in the middle
|
2023-09-05 02:03:32 +02:00 |
Mikolaj Wielgus
|
53c24b1a14
|
Remove created dot if drawing new seg or bend fails
|
2023-09-04 05:46:58 +02:00 |
Mikolaj Wielgus
|
84a5b81032
|
Iterate and filtermap over tangents in math module instead of for loop
|
2023-09-04 00:48:55 +02:00 |
Mikolaj Wielgus
|
7d76051cbf
|
Route to goal immediately if a straight path exists at any vertex
|
2023-09-03 05:43:08 +02:00 |
Mikolaj Wielgus
|
73a831ba6d
|
Visualize every routing search step
|
2023-09-03 01:56:46 +02:00 |
Mikolaj Wielgus
|
c492bd1dda
|
Parametrize routing using `RouteStrategy` trait
|
2023-09-02 06:05:13 +02:00 |
Mikolaj Wielgus
|
bea6d84878
|
Implement `AstarStrategy` trait to not borrow A* context multiple times
|
2023-09-02 01:44:35 +02:00 |
Mikolaj Wielgus
|
b5f9a5957a
|
Route with A* step by step instead of only after A*
|
2023-09-01 01:35:48 +02:00 |
Mikolaj Wielgus
|
1ac8dd2828
|
Only remove node when collision is detected during placement
As the node is inserted into the R-tree only afterwards.
|
2023-08-31 22:45:51 +02:00 |
Mikolaj Wielgus
|
cd5365c26f
|
Pass `width` as an argument instead of holding it in `Route`
|
2023-08-31 21:17:25 +02:00 |
Mikolaj Wielgus
|
e5ba7401c1
|
Move routing methods to the `Route` struct
Commented out shove/squeeze features for now.
|
2023-08-31 20:33:34 +02:00 |
Mikolaj Wielgus
|
9f201d2c3d
|
Make `Head`, `Segbend`, `Bow` copyable
Having to move or borrow tem, especially `Head`, makes it really
difficult to appease the borrow checker.
|
2023-08-31 07:27:42 +02:00 |
Mikolaj Wielgus
|
1d5b428bf9
|
Split out drawing routines from `Router` into `Draw`
|
2023-08-30 06:34:56 +02:00 |
Mikolaj Wielgus
|
0d7b10606a
|
Use `Option::map` instead of if-else
|
2023-08-30 05:12:11 +02:00 |
Mikolaj Wielgus
|
247b78087c
|
Add methods to unroute or undraw segbends
|
2023-08-29 21:11:03 +02:00 |
Mikolaj Wielgus
|
f2346eedb8
|
Run `cargo fix`
This hasn't cleaned up all the unused import, but it's a good start.
|
2023-08-29 05:02:45 +02:00 |
Mikolaj Wielgus
|
ceef3a7fb7
|
Take `&impl Interior` argument in path removal method
|
2023-08-29 01:59:11 +02:00 |
Mikolaj Wielgus
|
47aadfcdd3
|
Introduce `Segbend`, a seg-dot-bend triple
|
2023-08-29 01:49:37 +02:00 |
Mikolaj Wielgus
|
79a26cb324
|
Split `Walk` trait into `Interior` and `Ends` traits
|
2023-08-28 22:54:03 +02:00 |
Mikolaj Wielgus
|
84a7f5d873
|
Make `Bow` don't borrow the graph
|
2023-08-28 19:17:57 +02:00 |
Mikolaj Wielgus
|
47b3ffba08
|
Some small improvements to iteration in graph and layout code
|
2023-08-28 04:12:25 +02:00 |
Mikolaj Wielgus
|
14f6b9f870
|
Implement basic A* routing
|
2023-08-27 21:14:42 +02:00 |
Mikolaj Wielgus
|
270a7e857c
|
Provide means of converting dot index to vertex index
|
2023-08-27 05:00:15 +02:00 |
Mikolaj Wielgus
|
d1571c99f6
|
Wrap `FixedVertexHandle` in a `VertexIndex` struct
|
2023-08-27 04:03:04 +02:00 |
Mikolaj Wielgus
|
9196d95546
|
Triangulate only after drawing finishes
Otherwise we'll end up with the (not yet implemented) pathfinding
algorithm trying to route traces with themselves.
|
2023-08-26 22:25:01 +02:00 |
Mikolaj Wielgus
|
a1afd19fcb
|
Implement Petgraph's graph traits on a Spade's triangulation
|
2023-08-25 23:39:44 +02:00 |
Mikolaj Wielgus
|
658bb112c2
|
Move Delaunay triangulation to a new `Mesh` struct
|
2023-08-24 21:23:37 +02:00 |
Mikolaj Wielgus
|
8456259b38
|
Rename `Layout` to `Router`, `Mesh` to `Layout`
|
2023-08-24 03:32:50 +02:00 |
Mikolaj Wielgus
|
234a52f9e8
|
Rename "route" to "draw" and "shove" to "squeeze"
The terms "route" and "shove" will be reserved to functions on the
higher level of abstraction.
|
2023-08-23 19:00:47 +02:00 |
Mikolaj Wielgus
|
bbbd2f57fe
|
Add `Guide` struct to generate guide curves
|
2023-08-23 05:15:16 +02:00 |
Mikolaj Wielgus
|
356154c914
|
Make inner and outer circle obtainable from `Shape`
|
2023-08-22 21:40:10 +02:00 |
Mikolaj Wielgus
|
c7f89c9fb9
|
Delaunay triangulation using Spade library
|
2023-08-19 05:55:28 +02:00 |
Mikolaj Wielgus
|
c480111624
|
Display mesh edges
|
2023-08-18 22:37:21 +02:00 |
Mikolaj Wielgus
|
a077dfbca2
|
Don't collide with the same net
|
2023-08-18 02:39:11 +02:00 |
Mikolaj Wielgus
|
17d03bb9db
|
Add seg-bend and bend-bend collision detection
|
2023-08-17 03:33:22 +02:00 |
Mikolaj Wielgus
|
6e87f9c124
|
Fix dot-bend collision detection
Fixes bend AABB calculation and the actual circle-arc intersection
algorithm.
|
2023-08-16 21:39:24 +02:00 |
Mikolaj Wielgus
|
4f473bacec
|
Exclude mesh neighbors from collision detection
|
2023-08-16 19:55:12 +02:00 |
Mikolaj Wielgus
|
1a599951cd
|
Implement basic failure for moving dot to obstructed place
Intersection with bends isn't working yet.
|
2023-08-15 04:10:55 +02:00 |
Mikolaj Wielgus
|
c2a553c475
|
Incomplete implementation of low-level collision routines (untested)
|
2023-08-13 22:49:01 +02:00 |
Mikolaj Wielgus
|
14c3acb633
|
Change `Shape` from struct to enum
It's more readable to use a match rather than an odd if condition.
|
2023-08-08 02:28:41 +02:00 |
Mikolaj Wielgus
|
bdf3930894
|
Reinsert all bends into R-tree when moving a dot
This was causing a crash. Added some code that was used to debug this.
|
2023-08-02 00:28:52 +02:00 |
Mikolaj Wielgus
|
409cea61c0
|
Add macro to debug graph
|
2023-07-31 15:44:18 +02:00 |