local assertArgs = include "assertArgs" local util = include "util" local CelluloPlane = lib "class" ("CelluloPlane") CelluloPlane:include(mixin "_has" ("OffsetX")) CelluloPlane:include(mixin "_has" ("OffsetY")) CelluloPlane:include(mixin "Dimensions") function CelluloPlane:initialize(args) assertArgs(args, "ox", "oy", "width", "height") self:setOffsetX(args.ox) self:setOffsetY(args.oy) self:setDimensions(args.width, args.height, 0) return self end function CelluloPlane:absoluteToRelative(x, y) return x - self:getOffsetX(), y - self:getOffsetY() end function CelluloPlane:normalizedRelativeToAbsolute(x, y) x, y = x * self:getWidth() / 2, y * self:getHeight() / 2 x, y = x + self:getOffsetX(), y + self:getOffsetY() return x, y end function CelluloPlane:normalized(x, y) return x / self:getWidth(), y / self:getHeight() end function CelluloPlane:normalizedRelative(x, y) x, y = self:absoluteToRelative(x, y) x, y = self:normalized(x, y) return x * 2, y * 2 end return CelluloPlane