Jump to content

  • Log In with Google      Sign In   
  • Create Account


Math to calculate positions and keep them with in a texture size limit


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.

  • You cannot reply to this topic
5 replies to this topic

#1 MARS_999   Members   -  Reputation: 1238

Like
0Likes
Like

Posted 26 September 2012 - 07:19 PM

I am trying to figure out how to take a objects position which can be (20000, 20000) or (-20000, 20000) or (10, -102) anywhere bascially, and map that to a texture size of 2048x2048 or some size I deem fitting for the UI....

I want the main object to be at 0,0 and will never move and will be mapped to the center of the texture map, so on a 2048x2048 the main object would be placed at 1024,1024...

Thanks!

Sponsor:

#2 Álvaro   Crossbones+   -  Reputation: 11895

Like
0Likes
Like

Posted 26 September 2012 - 08:20 PM

This C++ function maps the entire plane to the square (0,2048)x(0,2048):
Point map_to_square(Point p, double scale) {
  return Point(2048.0*sigmoid(x*scale/2048.0), 2048.0*sigmoid(y*scale/2048.0));
}

double sigmoid(double x) {
  return 1.0/(1.0+std::exp(-x));
}

The parameterf `scale' determines how much magnification there is at the origin. If you want things near the origin to appear at the original scale, make it 1.0.

Is that what you wanted?

Edited by alvaro, 26 September 2012 - 08:22 PM.


#3 MARS_999   Members   -  Reputation: 1238

Like
0Likes
Like

Posted 26 September 2012 - 09:55 PM

This C++ function maps the entire plane to the square (0,2048)x(0,2048):

Point map_to_square(Point p, double scale) {
  return Point(2048.0*sigmoid(x*scale/2048.0), 2048.0*sigmoid(y*scale/2048.0));
}

double sigmoid(double x) {
  return 1.0/(1.0+std::exp(-x));
}

The parameterf `scale' determines how much magnification there is at the origin. If you want things near the origin to appear at the original scale, make it 1.0.

Is that what you wanted?


Where are you getting the X,Y variables that are sent to sigmoid()?

Thanks! I will try it tomorrow!

#4 Álvaro   Crossbones+   -  Reputation: 11895

Like
1Likes
Like

Posted 27 September 2012 - 12:28 AM

You want something that maps points like (10, -102) into your texture. In that case, x=10, y=-102. What else could I possibly mean?

#5 MARS_999   Members   -  Reputation: 1238

Like
1Likes
Like

Posted 27 September 2012 - 05:26 PM

You want something that maps points like (10, -102) into your texture. In that case, x=10, y=-102. What else could I possibly mean?


Well I was confused as you posted Point p and didn't use p.x or p.y so I was wondering where x,y was coming from... Sometimes people post stuff quick without proof reading. But yeah, my assumption would have been location (x,y) but wanted to clarify it.

BTW works great!!! Thanks!!!!

#6 Álvaro   Crossbones+   -  Reputation: 11895

Like
0Likes
Like

Posted 28 September 2012 - 05:29 AM


You want something that maps points like (10, -102) into your texture. In that case, x=10, y=-102. What else could I possibly mean?


Well I was confused as you posted Point p and didn't use p.x or p.y so I was wondering where x,y was coming from... Sometimes people post stuff quick without proof reading. But yeah, my assumption would have been location (x,y) but wanted to clarify it.


You are absolutely right. I meant to say p.x and p.y, and I posted it quickly without proof reading.

BTW works great!!! Thanks!!!!

Awesome!




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.



PARTNERS