# Convert from ArcRotateCamera, pos + alpha, beta, radius to pos + quaternion

**URL:** <https://forum.babylonjs.com/t/convert-from-arcrotatecamera-pos-alpha-beta-radius-to-pos-quaternion/36998>\
**Category:** Questions\
**Tags:** camera, arcrotatecamera\
**Created:** [December 30, 2022, 11:21am UTC](https://forum.babylonjs.com/t/convert-from-arcrotatecamera-pos-alpha-beta-radius-to-pos-quaternion/36998 "2022-12-30T11:21:28Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Leon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/leon/32/30387_2.png) [@Leon](https://forum.babylonjs.com/u/Leon)\
**Post date:** [December 30, 2022, 11:21am UTC](https://forum.babylonjs.com/t/convert-from-arcrotatecamera-pos-alpha-beta-radius-to-pos-quaternion/36998/1 "2022-12-30T11:21:29Z")

</div>

I have stored position and rotations in my database as  
vector3  
alpha  
beta  
radius

and we have been using an ArcRotateCamera for most things.

But we now want to change the camera to the UniversalCamera.

I want to be able to position the UniversalCamera in the exact same position that we have stored in the database.

I was able to copy the world position and rotation from an existing ArcRotateCamera using

```auto
const arcRotate = new ArcRotateCamera(...)
const pos = arcRotate.globalPosition.clone()
const rot = arcRotate.absoluteRotation.clone()

const universal = new UniversalCamera(...)
universal.position.copyFrom(pos)
universal.rotationQuaternion = rot

```

but this means I need to instantiate an ArcRotateCamera just to be able to do the math.

How would I implement the function below?

```auto
function convertToUniversalCamera(target: Vector3, alpha: number, beta:number, radius: number): { position: Vector3, quaternion: Quaternion } {
  /// how?
}

```

---

<div class="post-metadata">

**Author:** ![Takemura](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/takemura/32/25836_2.png) [@Takemura](https://forum.babylonjs.com/u/Takemura)\
**Post date:** [December 31, 2022, 6:31am UTC](https://forum.babylonjs.com/t/convert-from-arcrotatecamera-pos-alpha-beta-radius-to-pos-quaternion/36998/2 "2022-12-31T06:31:45Z")

</div>

To simplify I would utilize getFrontPosition() like here:

> [@Same camera on switch](https://forum.babylonjs.com/t/same-camera-on-switch/34373/4):
>
> Corresponding to your case, I would set target of arc camera as target of universal: universalCamera.setTarget(arcCamera.target) In case of switching from arc to universal: arcCamera.setTarget(universalCamera.getFrontPosition(arcCamera.radius)) The Playground: Note: There might be special edge case on arcCamera.beta === 0, so that arc camera flips, because it only has an upVector and no forwardVector.

---

<div class="post-metadata">

**Author:** ![carolhmj](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/carolhmj/32/25918_2.png) [@carolhmj](https://forum.babylonjs.com/u/carolhmj)\
**Post date:** [January 27, 2023, 4:36pm UTC](https://forum.babylonjs.com/t/convert-from-arcrotatecamera-pos-alpha-beta-radius-to-pos-quaternion/36998/3 "2023-01-27T16:36:18Z")

</div>

Hello @Leon just checking in if you need any more help?

---

<div class="post-metadata">

**Author:** ![Leon](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/leon/32/30387_2.png) [@Leon](https://forum.babylonjs.com/u/Leon)\
**Post date:** [January 30, 2023, 7:27am UTC](https://forum.babylonjs.com/t/convert-from-arcrotatecamera-pos-alpha-beta-radius-to-pos-quaternion/36998/4 "2023-01-30T07:27:20Z")

</div>

I was able to solve my problem, so thank you 🙂
