Mikolaj Wielgus
|
4549de098c
|
primitive: Move `tagged_{prev,next}` to a trait
First step towards getting rid of the `untag` macro.
|
2023-10-20 23:44:20 +00:00 |
Mikolaj Wielgus
|
4d20362e00
|
primitive: Move `.weight()` method to a new `GetWeight` trait
|
2023-10-20 01:08:58 +00:00 |
Mikolaj Wielgus
|
e271c82b7e
|
graph: Remove `Tag` trait
Name `Index` enum variants explicitly instead.
|
2023-10-19 22:41:53 +00:00 |
Mikolaj Wielgus
|
b52eefb1a3
|
cleanup: Remove unused imports, formatting
|
2023-10-19 20:29:31 +00:00 |
Mikolaj Wielgus
|
708fbb98f1
|
graph,primitive: Use enum_dispatch, rely on generics less
|
2023-10-19 20:07:26 +00:00 |
Mikolaj Wielgus
|
4e21ff754d
|
primitive: Move `.shape()` to a new trait `MakeShape`
|
2023-10-19 06:38:57 +00:00 |
Mikolaj Wielgus
|
ae9dd23b7c
|
graph: Move `retag` to an enum-dispatched trait
|
2023-10-18 22:46:18 +00:00 |
Mikolaj Wielgus
|
b7ff507302
|
shape: Use `enum_dispatch` for `Shape`
|
2023-10-18 02:33:03 +00:00 |
Mikolaj Wielgus
|
26778e7d47
|
draw: Comment out bend-flipping code for now
Was causing panics, so let's keep this out of the way for now.
|
2023-10-17 22:40:47 +00:00 |
Mikolaj Wielgus
|
e4e6590b4c
|
segbend: When constructing, don't assume bend before face dot
|
2023-10-17 22:39:48 +00:00 |
Mikolaj Wielgus
|
11c7f7fb12
|
layout: Don't modify bends while tey're in the R-tree
|
2023-10-17 22:37:40 +00:00 |
Mikolaj Wielgus
|
478f630a73
|
tracer: Don't tuck under inexistent bend
|
2023-10-17 19:02:26 +00:00 |
Mikolaj Wielgus
|
177b8cb231
|
guide: Return Err(...) instead of panicking
|
2023-10-17 05:17:07 +00:00 |
Mikolaj Wielgus
|
087d1deea0
|
router: Don't try to route around target dot
This was causing a panic, as it's not possible to route from *around* a
dot *into* the same dot.
|
2023-10-17 03:55:21 +00:00 |
Mikolaj Wielgus
|
c9d0b2178e
|
tracer: Add some initial code for squeezing/tucking
Not functional yet.
|
2023-10-17 03:16:02 +00:00 |
Mikolaj Wielgus
|
ce72a2ba4b
|
shape: Fix bend-seg intersection
By making zero-length bends non-intersectable.
|
2023-10-15 01:15:35 +00:00 |
Mikolaj Wielgus
|
4ec32c97ba
|
layout: Move R-tree remove out of `debug_assert`
Because of that release builds were panicking.
|
2023-10-14 04:47:30 +00:00 |
Mikolaj Wielgus
|
b1ac987d2f
|
shape: Temporarily disable bend-seg intersection as it's bugged
|
2023-10-14 04:46:16 +00:00 |
Mikolaj Wielgus
|
bfbad933e2
|
debug: Create and use `before_probe` observer for search visualization
Also changed `as_*`s to `into_*`s.
|
2023-10-13 04:00:01 +00:00 |
Mikolaj Wielgus
|
4e8e9298e6
|
astar: Probe neighbors before adding tem to queue
|
2023-10-12 00:19:38 +00:00 |
Mikolaj Wielgus
|
af61a6b120
|
router: Rename `Route` to `Tracer` and simplify related code
|
2023-10-11 22:23:18 +00:00 |
Mikolaj Wielgus
|
cc3b537b5c
|
debug: Visualize A* running during interactive routing
|
2023-10-10 21:09:21 +00:00 |
Mikolaj Wielgus
|
7a06a9b02d
|
router: Implement basic cursor following
|
2023-10-06 22:41:59 +00:00 |
Mikolaj Wielgus
|
0e8a6d6e42
|
Create new `Band` struct to pass around whole bands
|
2023-10-05 19:52:59 +00:00 |
Mikolaj Wielgus
|
0695b1deab
|
draw: Implement flipping the bend if a shorter one is available
|
2023-09-19 20:56:40 +02:00 |
Mikolaj Wielgus
|
abf92c7f43
|
contracts: Fix R-tree envelope invariance test
Violations were not detected if shape changed but not the envelope
(which is the case when bends are flipped).
|
2023-09-19 20:44:05 +02:00 |
Mikolaj Wielgus
|
f36f80537f
|
layout: Add invariant testing R-tree envelope invariance
|
2023-09-19 15:40:26 +02:00 |
Mikolaj Wielgus
|
efea917cb1
|
draw: Use `enum_dispatch` to dynamically dispatch `Head`
|
2023-09-17 16:54:23 +02:00 |
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 |