+ Vector<int> ToScreen(Vector<float> v) const {
+ return Vector<int>(OffsetOf(v));
+ }
+ Vector<float> OffsetOf(Vector<float> v) const {
+ return ToScale(v - *target) + offset;
+ }
+ Vector<float> ToScale(Vector<float> v) const {
+ if (zoom == 0) {
+ return v;
+ } else if (zoom > 0) {
+ return v * float(1 << zoom);
+ } else {
+ return v / float(1 << -zoom);
+ }