Why not define a scale factor...
i mean say you make a test and define that a distance from a sphere "a" is nice.
Then multiply the distance to center by the factor diff of the new sphere and 
your original sphere "a". no?

Fabrice


On May 19, 2010, at 9:18 PM, dyc wrote:

> Hey guys! I have a pretty complex problem, but Im sure itll be easy
> for some of you!
> 
> Anyways, I have this globe that you can click on the surface, and it
> places another sphere where u clicked, based on how far you dragged
> after clicking...that becomes the radius of the new smaller sphere.
> 
> I am zooming the camera into the sphere, but it is always a different
> size when u get zoomed up to it, because the radius is independent of
> the zooming script. What I need help on, is a way to inorporate the
> RADIUS of the new sphere into the zooming math, so that I can control
> how large the new sphere should be each time...I just want the sphere
> to be the same size every time they place a sphere and it zooms, no
> matter what the radius of the sphere is...
> 
> see what I mean?
> 
> Thanks so much!!
> 
> here is the code so far:
> 
> // New idea use bigger radius with lon/lat data
>                       var phi:Number = (90 - _currentLat) * Math.PI / 180;
>                       var theta:Number = (_currentLon) * Math.PI / 180;
>       // THIS NEXT LINE IS WHERE IM TRYING TO DO THE NEW
> CURRENTSELECTEDRADIUS incporporation
>                       /*// EARTHRADIUS + ZOOM_DISTANCE_FROM_SURFACE is the 
> distance from
> the planet to do
>                       // NEW WAY this is where the camera zooms to - 
> integrating with
> currentSelectedRadius of sphere.
>                       var cameraZoomX:Number = ((EARTHRADIUS +
> ZOOM_DISTANCE_FROM_SURFACE) * Math.sin(phi) * Math.cos(theta)) /
> currentSelectedRadius;
>                       var cameraZoomZ:Number = ((EARTHRADIUS +
> ZOOM_DISTANCE_FROM_SURFACE) * Math.sin(phi) * Math.sin(theta)) /
> currentSelectedRadius;
>                       var cameraZoomY:Number = ((EARTHRADIUS +
> ZOOM_DISTANCE_FROM_SURFACE) * Math.cos(phi)) /
> currentSelectedRadius;*/
> 
>                       // OLD WAY
>                       var cameraZoomX:Number = (EARTHRADIUS + 
> ZOOM_DISTANCE_FROM_SURFACE)
> * Math.sin(phi) * Math.cos(theta);
>                       var cameraZoomZ:Number = (EARTHRADIUS + 
> ZOOM_DISTANCE_FROM_SURFACE)
> * Math.sin(phi) * Math.sin(theta);
>                       var cameraZoomY:Number = (EARTHRADIUS + 
> ZOOM_DISTANCE_FROM_SURFACE)
> * Math.cos(phi);
> 
>                       var tagX:Number = (EARTHRADIUS + 
> ZOOM_DISTANCE_FROM_SURFACE + 500)
> * Math.sin(phi) * Math.cos(theta);
>                       var tagZ:Number = (EARTHRADIUS + 
> ZOOM_DISTANCE_FROM_SURFACE + 500)
> * Math.sin(phi) * Math.sin(theta);
>                       var tagY:Number = (EARTHRADIUS + 
> ZOOM_DISTANCE_FROM_SURFACE + 500)
> * Math.cos(phi);
> 
>                       TweenLite.to(zoomCamera, 3, { x: cameraZoomX, y: 
> cameraZoomY, z:
> cameraZoomZ, ease:Expo.easeOut} );

Reply via email to