VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
pose.cpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2025-2026 Arnis Lektauers
3//
4// Created by Arnis Lektauers 02.01.2026
5//
6#include "pose.h"
7
8namespace visutwin::canvas
9{
10 Pose* Pose::look(const Vector3& from, const Vector3& to)
11 {
12 _position = from;
13 _distance = from.distance(to);
14
15 const Vector3 dir = (to - from).normalized();
16 const float dx = dir.getX();
17 const float dy = dir.getY();
18 const float dz = dir.getZ();
19
20 float elev = std::atan2(-dy, std::sqrt(dx * dx + dz * dz)) * RAD_TO_DEG;
21 float azim = std::atan2(-dx, -dz) * RAD_TO_DEG;
22
23 _angles = Vector3(-elev, azim, 0.0f);
24
25 return this;
26 }
27}
Pose * look(const Vector3 &from, const Vector3 &to)
Definition pose.cpp:10
constexpr float RAD_TO_DEG
Definition defines.h:48
3D vector for positions, directions, and normals with multi-backend SIMD acceleration.
Definition vector3.h:29
float distance(const Vector3 &other) const
Definition vector3.h:242