<div dir="ltr">Hi all,<div><br></div><div>I'm working on an idle game for learning geography. The first version of it's up here: <a href="https://github.com/seagreen/Cuis-Smalltalk-RoadTrip">https://github.com/seagreen/Cuis-Smalltalk-RoadTrip</a></div><div><br></div><div>It doesn't do much at the moment, there's just a car that noodles around between US cities. However I wanted to go ahead and publish it so I could get advice on the zooming and panning mechanism.</div><div><br></div><div>Previously when I've implemented zoom-and-pan everything was based on screen coordinates. On zoom-in I stored a new scaling factor, and then when drawing the game applied this scaling factor to the game coordinates to get screen coordinates. Easy enough.</div><div><br></div><div>For RoadTrip though I'm taking advantage of Cuis' local coordinate system to keep my coordinates in longitude and latitude all the way to the user's display. It's extremely neat the users can pull up the morph halo and see a grid in long/lat.</div><div><br></div><div>But this makes scaling "interesting". On zoom-in when I apply `scaleBy:` to the morph the US map wants to shoot up and to the left off the screen. I'm currently handling this by moving the `morphPosition` after each zoom to offset this, so that while scaleBy makes the map jump up and to the left, the morph itself moves within its parent down and to the right to make up for it, hopefully keeping the map at the same place.</div><div><br></div><div>Unfortunately I can't figure out how to make it exactly accurate and it jerks around a lot when zoomed in. Before putting more debugging work into this I wanted to ask if it seems like I'm on the right track or if I've missed something obvious.</div><div><br></div><div>Thanks for the help,</div><div>Ian Jeffries</div><div><br></div></div>