Commit graph

26 commits

Author SHA1 Message Date
sheaf 0eb0724dde Refactors in preparation for stroke hierarchy 2024-09-27 17:21:24 +02:00
sheaf 9ff25a25aa cleanups 2024-08-29 01:46:50 +02:00
sheaf 7bb28f8c96 brush widget UI: don't allow 0 width or height 2024-05-28 10:36:26 +02:00
sheaf 300fbf92c0 fixes to brush widget UI 2024-05-25 17:04:08 +02:00
sheaf 1ec2af6dcc WIP: add brush widget UI 2024-05-21 19:40:22 +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 2289468a84 Fixes and restructuring 2024-02-28 17:20:34 +01:00
sheaf d1b3765335 Split out benchmark for cusp finding 2024-02-23 17:03:28 +01:00
sheaf 92efc4127c add teardrop shaped brush 2023-07-15 16:40:59 +02: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 50d99e1e4b improve intervallic Bézier evaluation
Now we evaluate Bézier curves using an AABB computation. This results
in tighter intervals, which means that the cusp-finding algorithm
is better behaved.
2023-04-25 23:07:18 +02: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 8ac22b4738 some optimisations 2023-01-29 04:03:36 +01:00
sheaf 236055b4ca do the interval brush stroking at degree 3 2023-01-21 15:24:08 +01:00
sheaf 6945aac704 improve show instances 2023-01-20 17:42:17 +01:00
sheaf 25d738b252 more WIP with TH now 2023-01-20 16:34:04 +01:00
sheaf 684550a795 implement intervallic brushes 2023-01-13 23:10:06 +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 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 bcd38ed791 clean up build steps & instructions 2022-12-04 15:52:29 +01: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