help calculating this
Started by john_lin, Dec 19 2012 12:05 PM
8 replies to this topic
#1 Members - Reputation: 103
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
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
Ad:
#2 Members - Reputation: 596
Posted 19 December 2012 - 05:59 PM
In general steps: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
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
#4 Members - Reputation: 332
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.
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.
#5 Crossbones+ - Reputation: 3518
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.
#7 Members - Reputation: 5802
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.







