help calculating this

This topic is 1833 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

hi to all,
I attached a img with this post . Please consider the marked lines as a grid in a orthgonal projection . I want to select a tile in this grid by clicking mouse over them . i want to know what kind of a formula used to solve this kind of problem . please help me to solve this issue;Thanks in advance

john lin

Share on other sites
[quote name='john_lin' timestamp='1355940309' post='5012521']
hi to all,
I attached a img with this post . Please consider the marked lines as a grid in a orthgonal projection . I want to select a tile in this grid by clicking mouse over them . i want to know what kind of a formula used to solve this kind of problem . please help me to solve this issue;Thanks in advance

john lin
[/quote]In general steps:

1. Multiply your world-to-view (w2v) and view-to-projection (v2p) matrices to give you a world-to-projection matrix (w2p).
2. Calculate the inverse of this to give you a projection-to-world matrix (p2w)
3. Transform the projection-space position (where you clicked on screen in projection space coordinates) to a world position
4. Transform the projection-space direction (depending on your coordinate system... something like (0, 0, 1)) to a world direction
5. Do intersection tests from the world-space point and directions to the rectangles in the grid

Share on other sites
This is not a trivial problem to solve, I'd suggest you take a look at [url="http://opencv.org/"]OpenCV[/url].

Share on other sites
Like Mussi said, it's not a trivial problem.

I'm no big expert in vision, but my first try would be to use the Canny edge detector (or some scale space variant) to create a grid image. Then partition the regions image by building a trapezoidal map. After that's done you can answer point location queries efficiently.
Though even this simple scheme will require a lot of tweaking to work correctly.

Share on other sites
To me it's not obvious the OP wants image pattern recognition, for all I can tell he might've used this to describe an abstract 2D grid viewed from an angle in 3D space, in which case the problem can be easily solved - raytrace against the grid plane, and convert the (x, y) intersection point (on the plane) to a (u, v) tile coordinate.

Share on other sites
how the peoples used to calculate the input(mouse click) to select tiles in farm vile like games . I really need that farm vile like solution please help me guys . thank you Edited by john_lin

Share on other sites
FarmVille uses isometric projection, so the formulas are a bit simpler. If you wan to select which tile has been clicked on in an image with perspective projection, it's not all that hard either. The easy way to do it is to compute ray-plane intersection (the ray being from the camera to the pixel where the click happened, the plane being the floor). One could also construct a projectivity (3x3 matrix) which maps screen coordinates to floor coordinates, but that's a little bit more involved.

Share on other sites

One way to go is:

1) Use "gluUnProject" to get a ray from the camera,

2) Use "ray to Plane"  to get an intersection point,

3) Map/Hash the intersection point to your 2D grid.