Commit graph

211 commits

Author SHA1 Message Date
sheaf 47cf66c5dd rename recomputeStrokes -> redrawStrokes 2024-10-12 16:48:21 +02:00
sheaf 1a8f4b5f5d improvements to brush params when changing brush 2024-10-12 15:41:52 +02:00
sheaf c1d6dd4151 brush list view: first steps 2024-10-09 16:57:08 +02:00
sheaf b5b29f124a Farey sum for curve subdivision 2024-09-28 15:45:07 +02:00
sheaf f7a4b02e90 fix stroke cache issues 2024-09-28 13:07:56 +02:00
sheaf 3886dca483 improvements to draw anchor 2024-09-28 12:10:36 +02:00
sheaf 3d36b39541 fix brush rotation widget 2024-09-28 11:17:33 +02:00
sheaf a41c6235ae anchor position is not static 2024-09-28 03:12:23 +02:00
sheaf 66490b87aa fix draw anchor curve indexing 2024-09-28 01:32:03 +02:00
sheaf 264e04555b add header to warning dialog 2024-09-28 00:38:32 +02:00
sheaf 23cc439ff2 update list model upon undo/redo 2024-09-27 23:53:33 +02:00
sheaf 1ca6d9ccf5 add back hie.yaml 2024-09-27 23:38:44 +02:00
sheaf 24f182feec add stroke layer view 2024-09-27 23:36:33 +02:00
sheaf 0eb0724dde Refactors in preparation for stroke hierarchy 2024-09-27 17:21:24 +02:00
sheaf 8b3705b8d1 Set GDK_SCALE = 2 by default 2024-09-08 17:04:41 +02:00
sheaf e2e4ae6bfe UI: use GTK Window instead of MessageDialog 2024-09-07 11:28:07 +02:00
sheaf fc2f25cfa6 UI: use GTK4 FileDialog API 2024-09-06 18:48:04 +02:00
sheaf bb9b381cb5 workaround for TH linking bugs 2024-09-06 13:08:40 +02:00
sheaf 9ff25a25aa cleanups 2024-08-29 01:46:50 +02:00
sheaf 2bae92dc5e more SIMD experiments 2024-08-29 00:26:19 +02:00
sheaf ed8720555f improve D to use Nat for domain 2024-08-05 17:49:04 +02:00
sheaf 5f98165276 WIP: SIMD experiments 2024-08-01 21:36:44 +02:00
sheaf e64ce375d2 housekeeping 2024-07-29 13:39:13 +02:00
sheaf 7bb28f8c96 brush widget UI: don't allow 0 width or height 2024-05-28 10:36:26 +02:00
sheaf 56939ce01a GTK 4.14 compatibility 2024-05-28 10:24:47 +02:00
sheaf 300fbf92c0 fixes to brush widget UI 2024-05-25 17:04:08 +02:00
sheaf 77a36e1f0b add more info to cusps benchmark output 2024-05-25 12:41:10 +02:00
sheaf af66b3b5ac update bounds for GHC 9.10 2024-05-23 11:17:36 +02:00
sheaf 91ac61e3cd WIP: add Walter's LP approach to interval Newton 2024-05-23 11:04:17 +02:00
sheaf 1ec2af6dcc WIP: add brush widget UI 2024-05-21 19:40:22 +02:00
sheaf 2a21980ffc Fix issues in withTangent & strictlyParallel function 2024-04-29 19:35:53 +02:00
sheaf 63b9703faf UI tweaks 2024-04-25 21:53:53 +02:00
sheaf c89fba7fd2 Improve specialisation + add degree computation 2024-04-25 21:53:27 +02:00
sheaf 6450859e3c Bench with & without box(1)-consistency algorithm 2024-04-24 02:04:13 +02:00
sheaf 17df43c5d7 Commentary in tearDropBrushFn 2024-04-24 01:47:01 +02:00
sheaf 32ce7c38bb Add some commentary to Gauss-Seidel function 2024-04-24 01:30:24 +02:00
sheaf a59f1695fb Sprinkle in a bit of unicode 2024-04-24 01:03:46 +02:00
sheaf edba0416aa Add complete interval-union Gauss–Seidel step method 2024-04-24 00:13:06 +02:00
sheaf ac9deb968a Clean up benchmarking component 2024-04-22 22:11:07 +02:00
sheaf 0c54de8b1c Update Eigen to expose unsafeCoeff 2024-04-22 20:12:31 +02:00
sheaf d797abc5e4 Modularise root isolation algorithms
Different root isolation algorithms now live in separate modules,
and are all instances of the RootIsolationAlgorithm typeclass.

This separates the algorithmic code from the top-level driver code
in Math.Root.Isolation.
2024-04-22 20:06:03 +02:00
sheaf b1df0d04e6 Always run Gauss-Seidel at tiny sizes to rule out fake solutions 2024-04-22 01:52:29 +02:00
sheaf 0e59d85143 Use 'n choose k' to choose Gauss-Seidel dimensions 2024-04-21 21:15:07 +02:00
sheaf 0e6b9a822b Documentation in root isolation module 2024-04-21 20:35:35 +02:00
sheaf 8009983b37 Slight refactor of bisection dimension choosing logic 2024-04-21 20:10:37 +02:00
sheaf ced714987e Implement adaptive shaving algorithm 2024-04-21 18:09:21 +02:00
sheaf 01fdd9a126 Improve robustness of quadratic equation solver
Based on ideas from the paper
  "The Ins and Outs of Solving Quadratic Equations with Floating-Point Arithmetic"
    (Frédéric Goualard, 2023)

Could still be improved further, but I think this is acceptable for now.
2024-04-21 14:19:37 +02:00
sheaf 1338d7ddbe Improve intervallic rotation computations
This commit bakes in a certain kind of representation for brush strokes:

  c(t,s) = p(t) + R(theta(t)) b(t,s)

This representation allows us to cancel out some rotation terms when
computing the envelope equation, improving the efficiency of the
cusp-finding methods.
2024-04-20 18:28:41 +02:00
sheaf 2b167f594a Make it easier to switch between 2 and 3-dim
This commit makes it easier to switch between the 2-dim and 3-dim
formulations of the cusp-finding problem. This is still work in progress,
trying to improve the performance of the cusp-finding algorithms.
2024-04-18 21:33:55 +02:00
sheaf 0160081e80 Further modularisation of root isolation code
The code is now generic over the dimension. There is a slight performance
loss that I need to investigate; perhaps some things are not getting
specialised? Maybe it is better to be more explicit about staging and
splice in the functions with fixed dimensions.
2024-04-18 20:14:19 +02:00