I’m looking into rewriting parts of my VoronoiCells package. One thing I want to do is to have a type
Rectangle and make functions that maps points between two Rectangles.
This attempt appears to work:
struct Rectangle Left::Float64 Right::Float64 Lower::Float64 Upper::Float64 end left(r::Rectangle) = r.Left right(r::Rectangle) = r.Right lower(r::Rectangle) = r.Lower upper(r::Rectangle) = r.Upper function construct_rectangle_map(from::Rectangle, to::Rectangle) function rect_map(p::GeometricalPredicates.Point2D) GeometricalPredicates.Point2D( left(to) + (getx(p) - left(from)) / (right(from) - left(from)) * (right(to) - left(to)), lower(to) + (gety(p) - lower(from)) / (upper(from) - lower(from)) * (upper(to) - lower(to)) ) end end
gety are from the GeometricalPredicates package.
from = Rectangle(-1, 1, 0, 1) and
to = VoronoiCells.Rectangle(1, 2, 1, 2) I get a map
m = construct_rectangle_map(from, to) that seems to work:
However, looking at
@code_lowered m(Point2D(0.3, 0.4)) it appears that the the
right are called inside the function.
I think it would be nice if the numbers are saved as the constants they are for a given map. Does anyone know how to do this?