forked from kronosaur/Alchemy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCSphericalCoordinates.cpp
More file actions
37 lines (28 loc) · 925 Bytes
/
CSphericalCoordinates.cpp
File metadata and controls
37 lines (28 loc) · 925 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// CSphericalCoordinates.cpp
//
// CSphericalCoordinates Class
// Copyright (c) 2016 by Kronosaur Productions, LLC. All Rights Reserved.
#include "Kernel.h"
#include "KernelObjID.h"
#include "Euclid.h"
CVector3D CSphericalCoordinates::FromCartessian (const CVector3D &vPos)
// FromCartessian
//
// Returns a spherical coordinate vector:
//
// x = radius
// y = zenith angle (angle from straight up), in radians
// z = azimuth, in radians
{
Metric rRadius = vPos.Length();
if (rRadius == 0.0)
return CVector3D();
return CVector3D(rRadius, acos(vPos.GetZ() / rRadius), atan2(vPos.GetY(), vPos.GetX()));
}
CVector3D CSphericalCoordinates::ToCartessian (const CVector3D &vPos)
// ToCartessian
//
// Returns cartessian coordinate from a spherical vector.
{
return CVector3D(vPos.GetX() * sin(vPos.GetY()) * cos(vPos.GetZ()), vPos.GetX() * sin(vPos.GetY()) * sin(vPos.GetZ()), vPos.GetX() * cos(vPos.GetY()));
}