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
|
894fa654cf
|
contracts: Visit nested expressions
Forgot to add this earlier.
|
2023-09-20 00:34:48 +02: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
|
12e37e0e91
|
contracts: Tell whether invariant was violation was pre or post
|
2023-09-19 18:04:08 +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
|
d7b5640a25
|
contracts: Improve abstract type detection (i.e. containing impl)
Now it also checks for if there's an impl inside the type, not only on
the outside.
|
2023-09-16 23:10:54 +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
|
d286f5c182
|
contracts: Replace `return` with block break
Without that, postconditions were skipped.
|
2023-09-15 20:16:37 +02:00 |
Mikolaj Wielgus
|
1a271cd89c
|
Add `node_count == size` invariant for `Layout`
|
2023-09-15 01:30:23 +02:00 |
Mikolaj Wielgus
|
82081ef170
|
contracts: Use block instead of closure for original function body
I don't know why Contracts uses a closure, code block works just fine
while avoiding bugs. I may find out the hard way later.
|
2023-09-15 00:13:39 +02:00 |
Mikolaj Wielgus
|
35484972ef
|
Vendor contracts crate
|
2023-09-15 00:10:10 +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 |