VisualizationView 内の画面に描画されているマップがあります。タッチ機能を使用して、このビュー内の焦点を合わせた場所に応じて、このマップをズームインおよびズームアウトできます。
また、この地図の拡大と描画を切り替えます。地図上に矢印を描いてズームインに戻ると、地図上に描いた矢印が、ズームインおよびズームアウトしている地図に対して同じ場所にとどまるようにします。つまり、この矢印の x 位置と y 位置を調整する必要があります。
必要なすべての変数がありますが、数学に関連しているため、これを解決する方法がわかりません。
誰かがこの数学の賢明な解決方法を説明してくれませんか? インターネットで調べてみましたが、良い説明が見つかりませんでした。また、タブレットのマップ解像度は常に 576 x 576 です。
public void onZoom(final double focusX, final double focusY,
final double factor) {
//pseudocode
Triangle.x = ..
Triangle.y = ..
Triangle.repaint();
//peusocode
}
ズームのコードは、ライブラリから直接次のとおりです。
public void zoom(double focusX, double focusY, double factor) {
synchronized (mutex) {
Transform focus = Transform.translation(toMetricCoordinates((int) focusX, (int) focusY));
double zoom = RosMath.clamp(getZoom() * factor, MINIMUM_ZOOM, MAXIMUM_ZOOM) / getZoom();
transform = transform.multiply(focus).scale(zoom).multiply(focus.invert());
}
}
誰かがこれを解く背後にある数学を説明できることを願っています。