# Zooming in and out on iPhone

What is the theory behind the pinch zoom in and out technique used on the iPhone??
How would one do this?
Do you get the distance between 2 touch points and measure them?
can someone point me in the right direction

Thanks

Here is the end code, it works for zooming in and out as well as moving around the iPhone, good usage in IOS games

``````//Author DOMINIC OBOJKOVITS
var check : boolean = false;
var OPinchDist : float;
var currentDist : float;
var counter : float ;
var touchP : Vector2;
var thing : Transform;
var speed : float = 0.1;
var Osize : float;

function Start(){

iPhoneKeyboard.autorotateToPortrait = false;
iPhoneKeyboard.autorotateToPortraitUpsideDown = false;
iPhoneKeyboard.autorotateToLandscapeRight = false;
iPhoneKeyboard.autorotateToLandscapeLeft = false;

}

function Update () {

var count = Input.touchCount;

//Limits
Osize = Camera.main.orthographicSize;
if (Osize >= 12){
Osize = 12;
}
if (Osize <= 4){
Osize = 4;
}
speed = 0.05 * (Osize/5);

//Zooming Factor
if (count >= 2){

if (check == false){
OPinchDist = Vector2.Distance(Input.GetTouch(0).position,Input.GetTouch(1).position);
check = true;
}
currentDist = Vector2.Distance(Input.GetTouch(0).position,Input.GetTouch(1).position);
var zoomFactor = ( (OPinchDist) / (currentDist) );

Camera.main.orthographicSize = Osize * zoomFactor;

}
if (count <= 1){
check = false;
}

//Moves the camera around
if (Input.touchCount == 1 &&
Input.GetTouch(0).phase == TouchPhase.Moved) {
var touchDeltaPosition:Vector2 = Input.GetTouch(0).deltaPosition;
thing.Translate (-touchDeltaPosition.x * speed,-touchDeltaPosition.y * speed, 0);
}

}
``````

Basically, you calcualte and store the distance between touches at the start of the zoom, and compare it to the distance between them to determine the zoom level along the way.

Calculating the distance between two touches is easyâ€¦

``````var pinchDistance = Vector3.Distance(touchPos1, touchPos2);
``````

Then youâ€™ll calculate the basic scaling factor something like thisâ€¦

``````var zoomFactor = (currentPinchDistance/originalPinchDistance);
``````

this can be applied in several different ways depending on your project. In a a third-person perspective view, you might use this factor to adjust the distance of the camera from the object. With an orthographic camera, you would apply it to the cameraâ€™s orthographicSize. In a first-person game for a sniper scope, youâ€™d probably want to apply it to the cameraâ€™s field of view. In most cases you could probably apply by just multiply it with the original value of those varibles before the pinch zoom started, ex, for orthographic cameraâ€¦

``````Camera.main.orthographicSie = originalOrthoSize * zoomFactor;
``````

Hope this helps!