Another option would be to multply the boundingRadius of the new Sphere by a factor that gives you a distance always in scale of the sphere.
like camera.distance = myNewSphere.boundingRadius * 1.8; Fabrice On May 21, 2010, at 12:14 AM, dyc wrote: > Im trying to wrap my head around this and it almost makes sense...can > you ellaborate a little? > > > m, Fabrice3D <[email protected]> wrote: >> 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} );
