Camera(int w, int h, const Vector<float> &);
public:
+ void SetTarget(const Vector<float> &t) { target = &t; }
+ void SetZoom(float z) { zoom = z; }
+
void Resize(int w, int h);
+ void Update(float deltaT);
+
+ void DoubleZoom();
+ void HalfZoom();
- Vector<float> Offset() {
- return -(*target - offset);
+ 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);
+ }
}
private:
const Vector<float> *target;
Vector<float> offset;
+ int zoom;
+
};
}