cbab33fb39
doc: expand on representation of collinearity
2024-10-20 20:02:51 -07:00
5918b30bb2
doc: expand on representations of lines
2024-10-20 19:53:36 -07:00
7fb4e3adee
doc: another unicode pseudo-space
2024-10-20 19:41:05 -07:00
cbad99d356
doc: punctuation
2024-10-20 19:33:33 -07:00
47c2217bcf
doc: fix more weird Unicode characters, probably from marktest editor
2024-10-20 19:27:05 -07:00
bb881f806c
doc: Won't tex formula immediately followed by dash
2024-10-20 16:17:18 -07:00
d3e5a0bc37
doc: Weird unicode minus
2024-10-20 16:15:27 -07:00
ce62a94ddb
doc: Two more small typos
2024-10-20 16:10:01 -07:00
160cb47f55
doc: Fix typos and expand some comments a bit in notes/inversive.md
2024-10-20 16:06:11 -07:00
Aaron Fenyes
48732093f7
doc: Clean up engine comments
2024-10-16 16:00:36 -07:00
Aaron Fenyes
db1b315df2
Merge branch 'engine-proto' of code.studioinfinity.org:glen/dyna3 into engine-proto
2024-10-15 14:41:20 -07:00
Aaron Fenyes
609cd2f814
doc: Correct and clarify various relations
2024-10-15 14:24:36 -07:00
ed88c7b9f9
doc: fix latex conflict with markdown table format
2024-10-03 21:20:32 -07:00
0e929123d4
doc: correct condition that two sphere/planes intersect
2024-10-03 20:39:15 -07:00
Aaron Fenyes
3f0cedfaab
doc: Clarify characterization of center of sphere
...
In the process, clarify the signed distance from a point to a sphere and
add inversion across a sphere.
2024-09-26 01:07:22 -07:00
Aaron Fenyes
2c1a42e251
doc: Clarify orientation convention
2024-09-25 23:07:52 -07:00
23ecca3963
doc: Another note about inversive coordinates
2024-09-18 20:27:04 -07:00
a182b66301
doc: More elaboration of plane coordinates in inversive notes
2024-09-18 20:11:20 -07:00
bd3e3506e5
doc: typo in inversive notes
2024-09-18 19:52:03 -07:00
8084fdeab0
doc: Slight mods to the inversive notes
2024-09-18 19:50:23 -07:00
Aaron Fenyes
d7dbee4c05
Stow algebraic engine prototype
...
We're using the Gram matrix engine for the next stage of development,
so the algebraic engine shouldn't be at the top level anymore.
2024-07-28 20:50:04 -07:00
Aaron Fenyes
9d69a900e2
Irisawa hexlet: use Abe's terminology in comments
...
Abe uses the names "sun" and "moon" for what Wikipedia calls the nucleus
spheres.
2024-07-18 03:39:41 -07:00
Aaron Fenyes
8a77cd7484
Irisawa hexlet: drop unviable approach
...
The approach in the deleted file can't work, because the "sun" and
"moon" spheres can't be placed arbitrarily.
2024-07-18 03:21:46 -07:00
Aaron Fenyes
a26f1e3927
Add Irisawa hexlet example
...
Hat tip Romy, who sent me the article on sangaku that led me to this
problem.
2024-07-18 03:16:57 -07:00
Aaron Fenyes
19a4d49497
Clean up example formatting
2024-07-18 01:48:05 -07:00
Aaron Fenyes
71c10adbdd
Overlapping pyramids: drop outdated comment
2024-07-18 01:12:49 -07:00
Aaron Fenyes
33c09917d0
Correct scope of guess constants
2024-07-18 01:05:13 -07:00
Aaron Fenyes
b24dcc9af8
Report success correctly when step limit is reached
2024-07-18 01:04:40 -07:00
Aaron Fenyes
b040bbb7fe
Drop old code from examples
2024-07-18 00:50:48 -07:00
Aaron Fenyes
9007c8bc7c
Circles in triangle: jiggle the guess
2024-07-18 00:49:09 -07:00
Aaron Fenyes
a7f9545a37
Circles in triangle: correct frozen variables
...
Since the self-product of the point at infinity is left unspecified, the
first three components can vary without violating any constraints. To
keep the point at infinity where it's supposed to be, we freeze all of
its components.
2024-07-18 00:43:00 -07:00
Aaron Fenyes
3764fde2f6
Clean up formatting of notes
2024-07-18 00:27:10 -07:00
Aaron Fenyes
24dae6807b
Clarify notes on tangency
2024-07-18 00:16:23 -07:00
Aaron Fenyes
74c7f64b0c
Correct sign of normal in plane utility
...
Clarify the relevant notes too.
2024-07-18 00:03:12 -07:00
Aaron Fenyes
d0340c0b65
Correct point utility again
...
The balance between the light cone basis vectors was wrong, throwing the
point's coordinates off by a factor of two.
2024-07-17 23:37:28 -07:00
Aaron Fenyes
69a704d414
Use notes' sign convention for light cone basis
2024-07-17 23:07:34 -07:00
Aaron Fenyes
01f44324c1
Tetrahedron radius ratio: find radius ratio
2024-07-17 22:45:17 -07:00
Aaron Fenyes
96ffc59642
Tetrahedron radius ratio: tweak guess
...
Jiggle the vertex guesses. Put the circumscribed sphere guess on-shell.
2024-07-17 19:01:34 -07:00
Aaron Fenyes
a02b76544a
Tetrahedron radius ratio: add circumscribed sphere
2024-07-17 18:55:36 -07:00
Aaron Fenyes
6e719f9943
Tetrahedron radius ratio: correct vertex guesses
2024-07-17 18:27:58 -07:00
Aaron Fenyes
d51d43f481
Correct point utility
2024-07-17 18:27:22 -07:00
Aaron Fenyes
6d233b5ee9
Tetrahedron radius ratio: correct signs
2024-07-17 18:08:36 -07:00
Aaron Fenyes
5abd4ca6e1
Revert "Give spheres positive radii in examples"
...
This reverts commit 4728959ae0
, which
actually gave the spheres negative radii! I got confused by the sign
convention differences between the notes and the engine.
2024-07-17 17:49:43 -07:00
Aaron Fenyes
ea640f4861
Start tetrahedron radius ratio example
...
Add the vertices of the tetrahedron to the `sphere-in-tetrahedron`
example.
2024-07-17 17:33:32 -07:00
Aaron Fenyes
4728959ae0
Give spheres positive radii in examples
...
This changes the meaning of `indep_val` in the overlapping pyramids
example, so we adjust `indep_val` to get a nice-looking construction.
2024-07-17 17:22:33 -07:00
Aaron Fenyes
2038103d80
Write examples directly in light cone basis
2024-07-17 15:37:14 -07:00
Aaron Fenyes
bde42ebac0
Switch engine to light cone basis
2024-07-17 14:30:43 -07:00
Aaron Fenyes
e6cf08a9b3
Make tetrahedron faces planar
2024-07-15 23:54:59 -07:00
Aaron Fenyes
7c77481f5e
Don't constrain self-product of frozen vector
2024-07-15 23:39:05 -07:00
Aaron Fenyes
1ce609836b
Implement frozen variables
2024-07-15 22:11:54 -07:00
Aaron Fenyes
b185fd4b83
Switch to backtracking Newton's method in Optim
...
This performs much better than the trust region Newton's method for the
actual `circles-in-triangle` problem. (The trust region method performs
better for the simplified problem produced by the conversion bug.)
2024-07-15 15:52:38 -07:00
Aaron Fenyes
94e0d321d5
Switch back to BigFloat precision in examples
2024-07-15 14:31:30 -07:00
Aaron Fenyes
53d8c38047
Preserve explicit zeros in Gram matrix conversion
...
In previous commits, the `circles-in-triangle` example converged much
more slowly in BigFloat precision than in Float64 precision. This
turned out to be a sign of a bug in the Float64 computation: converting
the Gram matrix using `Float64.()` dropped the explicit zeros, removing
many constraints and making the problem much easier to solve. This
commit corrects the Gram matrix conversion. The Float64 search now
solves the same problem as the BigFloat search, with comparable
performance.
2024-07-15 14:08:57 -07:00
Aaron Fenyes
7b3efbc385
Clean up backtracking gradient descent code
...
Drop experimental singularity handling strategies. Reduce the default
tolerance to within 64-bit floating point precision. Report success.
2024-07-15 13:15:15 -07:00
Aaron Fenyes
25b09ebf92
Sketch backtracking Newton's method
...
This code is a mess, but I'm committing it to record a working state
before I start trying to clean up.
2024-07-15 11:32:04 -07:00
Aaron Fenyes
3910b9f740
Use Newton's method for polishing
2024-07-11 13:43:52 -07:00
Aaron Fenyes
d538cbf716
Correct improvement threshold by using unit step
...
Our formula for the improvement theshold works when the step size is
an absolute distance. However, in commit `4d5ea06`, the step size was
measured relative to the current gradient instead. This commit scales
the base step to unit length, so now the step size really is an absolute
distance.
2024-07-10 23:31:44 -07:00
Aaron Fenyes
4d5ea062a3
Record gradient and last line search in history
2024-07-09 15:00:13 -07:00
Aaron Fenyes
5652719642
Require triangle sides to be planar
2024-07-09 14:10:23 -07:00
Aaron Fenyes
f84d475580
Visualize neighborhoods of global minima
2024-07-09 14:01:30 -07:00
Aaron Fenyes
77bc124170
Change loss function to match gradient
2024-07-09 14:00:24 -07:00
Aaron Fenyes
023759a267
Start "circles in triangle" from a very close guess
2024-07-08 14:21:10 -07:00
Aaron Fenyes
610fc451f0
Track slope in gradient descent history
2024-07-08 14:19:25 -07:00
Aaron Fenyes
93dd05c317
Add required package to "sphere in tetrahedron" example
2024-07-08 14:19:05 -07:00
Aaron Fenyes
9efa99e8be
Test gradient descent for circles in triangle
2024-07-08 12:56:28 -07:00
Aaron Fenyes
828498b3de
Add sphere and plane utilities to engine
2024-07-08 12:56:14 -07:00
Aaron Fenyes
736ac50b07
Test gradient descent for sphere in tetrahedron
2024-07-07 17:58:55 -07:00
Aaron Fenyes
ea354b6c2b
Randomize guess in gradient descent test
...
Randomly perturb the pre-solved part of the guess, and randomly choose
the unsolved part.
2024-07-07 17:56:12 -07:00
Aaron Fenyes
d39244d308
Host Ganja.js locally
2024-07-06 21:35:09 -07:00
Aaron Fenyes
7e94fef19e
Improve random vector generator
2024-07-06 21:32:43 -07:00
Aaron Fenyes
abc53b4705
Sketch random vector generator
...
This needs to be rewritten: it can fail at generating spacelike vectors.
2024-07-02 17:16:31 -07:00
Aaron Fenyes
17fefff61e
Name gradient descent test more specifically
2024-07-02 17:16:19 -07:00
Aaron Fenyes
133519cacb
Encapsulate gradient descent code
...
The completed gram matrix from this commit matches the one from commit
e7dde58
to six decimal places.
2024-07-02 15:02:59 -07:00
Aaron Fenyes
e7dde5800c
Do gradient descent entirely in BigFloat
...
The previos version accidentally returned steps in Float64.
2024-07-02 12:35:12 -07:00
Aaron Fenyes
242d630cc6
Get Ganja.js to display planes
2024-06-27 21:49:53 -07:00
Aaron Fenyes
8eb1ebb8d2
Merge branch 'ganja' into gram
2024-06-26 15:57:07 -07:00
Aaron Fenyes
05a824834d
Let visibility controls scroll
2024-06-26 15:56:51 -07:00
Aaron Fenyes
a113f33635
Merge branch 'ganja' into gram
...
Get visibility controls.
2024-06-26 15:52:20 -07:00
Aaron Fenyes
5ea32ac53c
Streamline visibility controls
2024-06-26 15:51:57 -07:00
Aaron Fenyes
3eb4fc6c91
Add element visibility controls
2024-06-26 15:24:31 -07:00
Aaron Fenyes
7aaf134a36
Size the viewer window automatically
2024-06-26 13:15:54 -07:00
Aaron Fenyes
c933e07312
Switch to Ganja.js basis ordering
2024-06-26 11:39:34 -07:00
Aaron Fenyes
2b6c4f4720
Avoid naming conflict with identity transformation
2024-06-26 11:28:47 -07:00
Aaron Fenyes
5aadfecf6c
Merge branch 'ganja' into gram
...
Visualize low-rank factorization results.
2024-06-26 11:12:24 -07:00
Aaron Fenyes
4a28a47520
Update namespace of AbstractAlgebra.Rationals
2024-06-26 01:06:27 -07:00
Aaron Fenyes
a3b1f4920c
Build construction viewer module
2024-06-26 00:41:21 -07:00
Aaron Fenyes
665cb30ce0
Correct indentation of CSS
2024-06-25 23:31:00 -07:00
Aaron Fenyes
182b5bb9f6
Generate palette automatically
2024-06-25 17:57:16 -07:00
Aaron Fenyes
b7b5b9386b
Load elements from Julia into Ganja.js
2024-06-25 16:30:19 -07:00
Aaron Fenyes
06a9dda5bb
Play with reflections
...
Try configuration of five tangent spheres.
2024-06-25 13:40:40 -07:00
Aaron Fenyes
69a9baa8ee
Add live updates to Ganja.js visualization
2024-06-25 03:11:50 -07:00
Aaron Fenyes
3b10c95d5f
Clean up examples
...
Declare JavaScript variables. Revise Julia comments to match new code.
2024-06-25 02:58:39 -07:00
Aaron Fenyes
3c34481519
Get familiar with Ganja.js inline syntax
2024-06-25 01:54:01 -07:00
Aaron Fenyes
d1ce91d2aa
Get a Ganja.js visualization running in Blink
2024-06-24 19:37:57 -07:00
Aaron Fenyes
58a5c38e62
Try numerical low-rank factorization
...
The best technique I've found so far is the homemade gradient descent
routine in `descent-test.jl`.
2024-05-30 00:36:03 -07:00
Aaron Fenyes
ef33b8ee10
Correct signature
2024-03-01 13:26:20 -05:00
Aaron Fenyes
717e5a6200
Extend Gram matrix automatically
...
The signature of the Minkowski form on the subspace spanned by the Gram
matrix should tell us what the big Gram matrix has to look like
2024-02-21 03:00:06 -05:00
Aaron Fenyes
16826cf07c
Try out the Gram matrix approach
2024-02-20 22:35:24 -05:00
Aaron Fenyes
3170a933e4
Clean up example of three mutually tangent spheres
2024-02-15 17:16:37 -08:00
Aaron Fenyes
f2000e5731
Test different sign patterns for cosines
...
It seems like there are real solutions if and only if the product of the
cosines is positive.
2024-02-15 16:25:09 -08:00
Aaron Fenyes
ba365174d3
Find real solutions for three mutually tangent spheres
...
I'm not sure why the solver wasn't working before. It might've been just
an unlucky random number draw.
2024-02-15 16:16:06 -08:00
Aaron Fenyes
ae5db0f9ea
Make results reproducible
2024-02-15 16:00:46 -08:00
Aaron Fenyes
8d8bc9162c
Store elements in arrays to keep order stable
...
This seems to restore reproducibility.
2024-02-15 15:42:26 -08:00
Aaron Fenyes
291d5c8ff6
Study mutually tangent spheres with two fixed
2024-02-15 13:28:01 -08:00
Aaron Fenyes
e41bcc7e13
Explore the performance wall
...
Three points on two spheres is too much.
2024-02-13 04:02:14 -05:00
Aaron Fenyes
31d5e7e864
Play with two points on two spheres
...
Guess conditions that make the scaling constraint impossible to satisfy.
2024-02-12 22:48:16 -05:00
Aaron Fenyes
a450f701fb
Try displaying a chain of spheres
...
For three mutually tangent spheres, I couldn't find real solutions.
2024-02-12 21:14:07 -05:00
Aaron Fenyes
6cf07dc6a1
Evaluate and display elements
2024-02-12 20:34:12 -05:00
Aaron Fenyes
1f173708eb
Move random cut routine into engine
2024-02-10 17:39:26 -05:00
Aaron Fenyes
6f18d4efcc
Test lots of uniformly distributed hyperplanes
2024-02-10 15:10:48 -05:00
Aaron Fenyes
621c4c5776
Try uniformly distributed hyperplane orientations
...
Unit normals are uniformly distributed over the sphere.
2024-02-10 15:02:26 -05:00
Aaron Fenyes
b3b7c2026d
Separate the algebraic and numerical parts of the engine
2024-02-10 14:50:50 -05:00
Aaron Fenyes
af1d31f6e6
Test a scale constraint
...
In all but a few cases (for example, a single point on a plane), we
should be able to us the radius-coradius boost symmetry to make the
average co-radius—representing the "overall scale"—roughly one.
2024-02-10 14:21:52 -05:00
Aaron Fenyes
8e33987f59
Systematically try out different cut planes
2024-02-10 13:46:01 -05:00
Aaron Fenyes
06872a04af
Say how many sample solutions we found
2024-02-10 01:06:06 -05:00
Aaron Fenyes
becefe0c47
Try switching to compiled system
2024-02-10 00:59:50 -05:00
Aaron Fenyes
34358a8728
Find witnesses on random rational hyperplanes
...
Choose hyperplanes that go through the trivial solution.
2024-02-09 23:44:10 -05:00
Aaron Fenyes
95c0ff14b2
Show explicitly that all coefficients are 1 in first cut equation
2024-02-09 17:09:43 -05:00
Aaron Fenyes
f97090c997
Try a cut that goes through the trivial solution
...
The previous cut was supposed to do this, but I was missing some parentheses.
2024-02-08 01:58:12 -05:00
Aaron Fenyes
45aaaafc8f
Seek sample solutions by cutting with a hyperplane
...
The example hyperplane yields a single solution, with multiplicity six. You can
find it analytically by hand, and homotopy continuation finds it numerically.
2024-02-08 01:53:55 -05:00
Aaron Fenyes
43cbf8a3a0
Add relations to center and orient the construction
2024-02-05 00:10:13 -05:00
Aaron Fenyes
21f09c4a4d
Switch element abbreviation from "elem" to "elt"
2024-02-04 16:08:13 -05:00
Aaron Fenyes
a3f3f6a31b
Order spheres before points within each coordinate block
...
In the cases I've tried so far, this leads to substantially smaller
Gröbner bases.
2024-02-01 16:13:22 -05:00
Aaron Fenyes
65d23fb667
Use module names as filenames
...
You're right: this naming convention seems to be standard for Julia
modules now.
2024-01-30 02:49:33 -05:00
Aaron Fenyes
4e02ee16fc
Find dimension of solution variety
2024-01-30 02:45:14 -05:00
Aaron Fenyes
6349f298ae
Extend AbstractAlgebra ideals to rational coefficients
...
The extension should also let us work over finite fields of prime order,
although we don't need to do that.
2024-01-29 19:11:21 -05:00
Aaron Fenyes
0731c7aac1
Correct relation equations
2024-01-29 12:41:07 -05:00
Aaron Fenyes
59a527af43
Correct Minkowski product; build chain of three spheres
2024-01-29 12:28:57 -05:00
Aaron Fenyes
c29000d912
Write a simple solver for the hitting set problem
...
I think we need this to find the dimension of the solution variety.
2024-01-28 01:34:13 -05:00
Aaron Fenyes
86dbd9ea45
Order variables by coordinate and then element
...
In other words, order coordinates like
(rₛ₁, rₛ₂, sₛ₁, sₛ₂, xₛ₁, xₛ₂, xₚ₃, yₛ₁, yₛ₂, yₚ₃, zₛ₁, zₛ₂, zₚ₃)
instead of like
(rₛ₁, sₛ₁, xₛ₁, yₛ₁, zₛ₁, rₛ₂, sₛ₂, xₛ₂, yₛ₂, zₛ₂, xₚ₃, yₚ₃, zₚ₃).
In the test cases, this really cuts down the size of the Gröbner basis.
2024-01-27 14:21:03 -05:00
Aaron Fenyes
463a3b21e1
Realize relations as equations
2024-01-27 12:28:29 -05:00
Aaron Fenyes
4d5aa3b327
Realize geometric elements as symbolic vectors
2024-01-26 11:14:32 -05:00
Aaron Fenyes
b864cf7866
Start drafting engine prototype
2024-01-24 11:16:24 -05:00