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
4cd11fa02f
add export to SVG functionality
2023-02-03 14:16:57 +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
1ae84fec97
precondition before taking Gauss-Seidel step
2023-01-23 13:58:52 +01:00
sheaf
78c03b99e1
change fitpoint render size
2023-01-23 02:01:56 +01:00
sheaf
86874882e4
fix bug in partitions function
2023-01-23 02:01:03 +01:00
sheaf
dd503df126
draw cusps in debug mode
2023-01-23 00:37:56 +01:00
sheaf
d2a485f71e
Interval Newton method for cusp isolation
2023-01-22 18:00:58 +01:00
sheaf
eb68c27941
add separate EnvelopeEquation module (forgot to add earlier)
2023-01-22 18:00:47 +01:00
sheaf
bdcac18ab9
add chain rule R^n -> R -> R
2023-01-22 04:51:23 +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
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
33a3cbfaa1
find solutions on nearby curves
2023-01-11 20:05:56 +01:00
sheaf
8fc5e6c9b8
compute brush strokes using the envelope equation
2023-01-11 15:26:12 +01:00
sheaf
43098dec01
Newton-Raphson implementation
2023-01-11 15:25:52 +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
eba08a6edd
add first-class functions to brush language
2021-05-25 13:45:21 +02:00
sheaf
5ff935b4b2
update render & select for new brush manipulation
2021-05-24 17:37:26 +02:00
sheaf
15d50f8d76
add signed curvature computation
2021-05-16 00:33:58 +02:00
sheaf
7431e8ba67
compute roots of envelope equation
2021-05-15 23:27:21 +02:00
sheaf
df2469487d
add cubic Bézier crunode computation
2021-05-15 21:24:58 +02:00
sheaf
9f16cff978
fix brush join orientations
2021-05-13 22:07:49 +02:00
sheaf
570a593f4f
fix stupid error in quadratic solver
2021-05-12 15:16:26 +02:00
sheaf
2983943363
compute correct open stroke caps
2021-05-12 13:58:30 +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
f8b0ec2ab1
adjust spline wither framework/selection deletion
2021-05-01 20:38:11 +02:00
sheaf
a4bf83949a
fix incorrect field name in stroke hierarchy deserialisation
2021-04-30 17:48:19 +02:00
sheaf
df9b9c1f66
simplify Laguerre solver
2021-04-29 21:03:45 +02:00
sheaf
4182b78c7e
fix incorrect deflation code
2021-04-27 01:16:30 +02:00
sheaf
d604d4120e
stroke hierarchy
2021-04-26 17:18:48 +02:00
sheaf
a5fdce1133
use Seq for strokes
2021-04-26 14:34:34 +02:00
sheaf
e1c5d266eb
embed brushes inline into strokes
2021-04-26 01:17:27 +02:00
sheaf
70cab39947
write cabal version number to .mb JSONs
2021-04-25 17:50:35 +02:00
sheaf
2ee0cbbfc0
fix styling on dialog windows
2021-04-25 15:22:10 +02:00
sheaf
c3bcce58a7
use ?self to address pointer ownership warnings
2021-04-25 01:59:15 +02:00
sheaf
36a6a3ca4b
Fix file chooser crashes
2021-04-21 18:14:35 +02:00
sheaf
1b0382f3b0
Switch to GTK4
2021-04-21 15:08:33 +00:00
sheaf
a9adcba8eb
fix some errors in polynomial code
2021-02-26 01:52:52 +01:00
sheaf
5e62937f16
fix preview for first curve in path
2021-02-25 14:43:43 +01:00
sheaf
c6694e4e2f
fix bug in reverseSpline
2021-02-25 14:04:54 +01:00
sheaf
46275514ff
add stroke preview when drawing
2021-02-25 03:41:12 +01:00
sheaf
4788ab2efd
fix bug in cubic Bézier subdivision
2021-02-25 00:07:15 +01:00
sheaf
212ac4fded
use STRefs to hold cached outline data
2021-02-24 22:52:26 +01:00
sheaf
6dbade1fae
always use current viewport sizes
2021-02-23 21:52:03 +01:00
sheaf
c1cae2b69f
compute outline data concurrently
2021-02-23 20:58:53 +01: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
a5ba7dcd33
use haskell-gi bugfix to improve tab reordering
2020-09-26 00:21:49 +02: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
eb8e7012aa
curve dragging support
2020-09-18 19:17:40 +02:00
sheaf
40d10b6a8e
add backend implementation of curve dragging
2020-09-17 05:47:53 +02:00
sheaf
2e9c437bd4
fix incorrect brush join computation
...
* also add some curvature calculations (unused at the moment)
2020-09-16 23:56:19 +02:00
sheaf
1c6f751a2b
improve offset tangent calculation
2020-09-15 19:07:22 +02:00
sheaf
808e37b1b3
fix issue with incorrect subdivision in fit
...
* was using `Max ( Arg t sq_dist )` instead of `Max ( Arg sq_dist t )`
2020-09-14 06:28:35 +02:00
sheaf
e3d920573d
add debug mode to visualise fitting algorithm
2020-09-14 06:03:45 +02:00
sheaf
087c29aef3
fix time-travel issue in deletion code
2020-09-11 00:37:39 +02:00
sheaf
dc11c1af15
add change descriptions for document history
...
* fix issue with accelerator key press handler
overriding the application's key press handler
* fix not being able to close tabs when no document is active
2020-09-10 21:50:35 +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
777b894c06
fix accelerator key handling
2020-09-06 17:20:04 +02:00
sheaf
e4779d8af2
update "toggle guides" menu text on toggle
2020-09-06 15:31:18 +02:00
sheaf
091c1603bb
add toggle for showing guides
2020-09-06 05:32:03 +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
9a2f123895
fix incorrect selection mode for Shift
2020-09-06 01:06:44 +02:00
sheaf
031d72a69b
create/move/delete guides: drag from ruler area
2020-09-06 00:40:56 +02:00
sheaf
930fa0ebf9
don't attempt to draw outline when brush is empty
2020-09-05 15:35:01 +02:00
sheaf
a098eb6471
refactor document modification
...
* the "modifyingCurrentDocument" now handles
all the followup actions necessary after
modifying the current document,
such as updating the title bar
2020-09-05 02:56:59 +02:00
sheaf
264fa8dff0
dynamic file tab close button behaviour
2020-09-04 22:51:47 +02:00
sheaf
86729cb462
update title and file tab upon change, close
2020-09-04 20:54:48 +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
919acf4928
add accelerator labels to menu items
2020-09-02 15:58:00 +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
9c5f8b1198
use correct applicative operation for brush lerp
2020-08-31 01:59:14 +02:00
sheaf
9e73da9fff
implement selection & drag-move in brush mode
2020-08-29 22:19:51 +02:00
sheaf
dfa446254a
adjust what is rendered in different modes
2020-08-29 20:50:02 +02:00