• FEATURED

View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# help calculating this

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

8 replies to this topic

### #1john_lin  Members

Posted 19 December 2012 - 12:05 PM

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

### #20r0d  Members

Posted 19 December 2012 - 05:59 PM

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

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

### #3Mussi  GDNet+

Posted 19 December 2012 - 06:04 PM

This is not a trivial problem to solve, I'd suggest you take a look at OpenCV.

### #4max343  Members

Posted 19 December 2012 - 06:22 PM

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.

### #5Bacterius  Members

Posted 19 December 2012 - 08:31 PM

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.

“If I understand the standard right it is legal and safe to do this but the resulting value could be anything.”

### #6john_lin  Members

Posted 20 December 2012 - 03:10 PM

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, 20 December 2012 - 03:12 PM.

### #7Álvaro  Members

Posted 20 December 2012 - 03:19 PM

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.

### #8john_lin  Members

Posted 20 December 2012 - 03:52 PM

### #9DT....  Members

Posted 13 January 2013 - 12:33 AM

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.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.