Open saraedum opened 3 years ago
The easiest approach might be:
(v/2, v/4)
or maybe by (v-x, v/2)
.As discussed, it is unclear whether LLL can find anything useful here since the dimension of the tangent space is very small compared to number of half edges × number field degree. However, doing LLL over number fields seems to be a very hard problem, see e.g., https://link.springer.com/chapter/10.1007/978-3-030-34621-8_3.
.find_simple_surface()
operation on GL2ROrbitClosure
that tries to find the "simplest" surface around. Namely one whose coefficients are as simple as possible. Having such operation might be useful for further deformation as this simplest surface might be a better starting point for deformations.GL2ROrbitClosure.field_of_definition()
. Though the latter method uses the echelon form which is dramatically expensive in general. I am not sure how it can be done without it. Assuming that we knew how to implement efficiently GL2ROrbitClosure.field_of_definition()
it is not even clear to me how to find a surface with coefficients in that field.As a minimalistic first step, we are now deforming with the smallest vector in the tangent space (that does not come from the x,y coordinates) and only deform if the blowup is less than 1e20. (That's probably not a good bound.)
Currently, we deform with the first tangent vector we find, scaled so that it is shorter than
(1, 0)
.There are several problems with this approach:
(x, 0)
often leads to lots of flips when callingFlatTriangulation::operator+
. It is probably better to use a vector that is not axis-aligned. (Or explicitly search for a vector that does not need any flips.)Without these changes, we cannot seem to go systematically beyond triangles
(a, b, c)
witha + b + c > 60
.