Commit graph

70 commits

Author SHA1 Message Date
sheaf 2289468a84 Fixes and restructuring 2024-02-28 17:20:34 +01:00
sheaf 6b658acedd Restructure project & update bounds 2024-02-17 13:58:40 +01:00
sheaf 96aa38b3c3 improve rotations in interval arithmetic
Computing a rotation in interval arithmetic can lose tightness.
Instead of computing

   a cos phi + b sin phi

which doesn't account for the difference in phase in the two sinusoids,
it is better to use

  sqrt (a² + b²) * cos ( phi - atan2(a,b) )

which correctly estimates the maximum amplitude of the sum to be
sqrt(a²+b²) instead of abs(a) + abs(b).

This seems to worsen the performance of the interval Newton method
at the moment, possibly due to the complexity of the new formula,
which involves computing atan(b/a). Further investigation is needed.
2023-05-14 21:38:25 +02:00
sheaf 7db3cbef33 more work into observability 2023-03-13 22:09:15 +01:00
sheaf 52420a1169 experiment: FMA backend for interval arithmetic
also includes the start of a way to observe which equations
are being solved, which should help with improving the performance of
the interval Newton method
2023-03-12 19:15:58 +01:00
sheaf cd6b7368f8 Update cabal.project for GHC 9.6 2023-02-09 17:53:25 +01:00
sheaf 8ac22b4738 some optimisations 2023-01-29 04:03:36 +01:00
sheaf 4174d9b5b6 rejigging 2023-01-28 01:26:47 +01:00
sheaf 236055b4ca do the interval brush stroking at degree 3 2023-01-21 15:24:08 +01:00
sheaf 25d738b252 more WIP with TH now 2023-01-20 16:34:04 +01:00
sheaf c7cd6c2a1c WIP on monomial bases 2023-01-16 02:31:31 +01:00
sheaf 684550a795 implement intervallic brushes 2023-01-13 23:10:06 +01:00
sheaf 09c1bdd948 continue interval arithmetic integration 2023-01-13 15:23:33 +01:00
sheaf a4e9c1cf32 preparation for interval arithmetic 2023-01-13 06:32:34 +01:00
sheaf 8fc5e6c9b8 compute brush strokes using the envelope equation 2023-01-11 15:26:12 +01:00
sheaf 671dae5474 use R2 instead of Point2D & Vector2D 2023-01-09 04:27:08 +01:00
sheaf 22820b328d more cabal file cleanups 2023-01-09 02:54:42 +01:00
sheaf cca4558985 put all colours into a separate CSS file 2023-01-08 21:12:00 +01:00
sheaf 5bd4e7f4cf framework for brush differentiation 2023-01-08 17:16:14 +01:00
sheaf 4e5c848883 kill off brush EDSL 2022-12-11 02:33:34 +01:00
sheaf 066a4e653f more GHC 9.4 build fixes 2022-12-04 17:25:44 +01:00
sheaf bcd38ed791 clean up build steps & instructions 2022-12-04 15:52:29 +01:00
sheaf c80fdac30a switch to using eigen instead of hmatrix 2022-06-17 16:21:52 +02:00
sheaf 4e15380c7e use diagrams to parse MetaFont paths 2022-02-13 17:30:54 +01:00
sheaf 64e45f126b Refactor module hierarchy, use internal records 2022-02-11 22:05:13 +01:00
sheaf 5ff935b4b2 update render & select for new brush manipulation 2021-05-24 17:37:26 +02:00
sheaf 7431e8ba67 compute roots of envelope equation 2021-05-15 23:27:21 +02:00
sheaf c64a4140c4 fix orientation of brush joins 2021-05-10 23:51:05 +02:00
sheaf b46dc2a140 start reworking brush stroking 2021-05-10 18:02:42 +02:00
sheaf 1b0382f3b0 Switch to GTK4 2021-04-21 15:08:33 +00:00
sheaf b32499cc68 GHC 9.0 compatibility 2021-02-23 13:16:26 +01:00
sheaf ab3a12c983 use assertions instead of errors, minor linting 2020-11-15 06:28:48 +01:00
sheaf 1e4bb4bddc implement a basic brush store
* each stroke stores the brushes it uses by reference,
    so that one can interactively edit brushes
    and see the strokes be updated in real-time
  * when writing to a file, we retrive the brush code
    from the reference, and include that information statically
2020-11-14 23:32:23 +01:00
sheaf 393ef6f06e Implement programmable brush framework 2020-11-12 17:34:46 +00:00
sheaf 58ca70c1bd optimise root-finding functions
* use PrimArray to represent polynomials
  * add some strictness annotations
  * turn on some optimisation flags
  * use quadratic formula for quadratic polynomials
2020-09-19 00:43:07 +02:00
sheaf 7e8c2e10d1 add document history & undo/redo 2020-09-10 18:59:14 +02:00
sheaf 0a978b7c59 add hover indicator for points and guides 2020-09-09 01:23:25 +02:00
sheaf dc6602bb79 refactor ruler subdivision handling 2020-09-08 22:20:46 +02:00
sheaf a459467ed0 add parallelism for brush outline computation
* also enable varying the fitting parameters (UI todo)
2020-09-07 17:38:22 +02:00
sheaf d501fcb76a add ruler ticks
* also includes some improvements to Cairo pixel alignment
2020-09-07 15:44:08 +02:00
sheaf 3660cb8dce subdivide paths by double-clicking on them
* still WIP:
    - path mode: does not correctly interpolate brushes
    - brush mode: does not propagate subdivision to other brushes
2020-09-06 04:43:28 +02:00
sheaf 031d72a69b create/move/delete guides: drag from ruler area 2020-09-06 00:40:56 +02:00
sheaf 264fa8dff0 dynamic file tab close button behaviour 2020-09-04 22:51:47 +02:00
sheaf 341a8ed0ca closing documents / removing file tabs 2020-09-03 05:57:08 +02:00
sheaf 5f3bbc891a add saving/loading 2020-09-03 00:53:08 +02:00
sheaf db4115c634 hook up menu to actions, + some refactors 2020-09-02 22:49:50 +02:00
sheaf 7033578e20 refactor: separation of event handling and actions 2020-09-02 04:52:08 +02:00
sheaf 101d9515c0 update file tabs dynamically 2020-09-01 21:56:59 +02:00
sheaf 8a6b4f5391 encode/decode documents to JSON using waargonaut 2020-08-31 22:28:30 +02:00
sheaf 9bde44ed42 fix brush stroke point order for open brush path
* also: add some preset brushes
2020-08-29 19:41:07 +02:00