sexages与vector3和反之亦然

时间:2017-04-15 07:34:06

标签: c# unity3d reverse astronomy

Ciao ......我试着清楚地陈述我的问题

langague在unity3d上是c#,我尝试使用正确的提升,赤纬和距离来构建场景

这里不收取太多费用我在漂浮物中转换性别(AR-> h,m,s DEC-> Deg,m,s)

---> Sexagesimal to Vector3

public static Vector3 SexPositionToVector3(float ascensione_retta, float declinazione, float anni_luce, Vector3 punto_osservazione=default(Vector3))
{
    Vector3 ret = Vector3.zero;

    // DEC
    float y = ((float)Mathf.Sin(Mathf.Deg2Rad * declinazione)) * anni_luce;
    float x = ((float)Mathf.Cos(Mathf.Deg2Rad * declinazione)) * anni_luce;// Mathf.Abs
    ret = (new Vector3(x, y, 0)) + punto_osservazione;

    // AR
    Vector3 angoli = new Vector3(0, ascensione_retta, 0);
    ret = RotatePointAroundPivot(ret, punto_osservazione, angoli);

    return ret;
}

punto_osservazione是指ra和dec在与vector3.zero不同的点计算的时间;

public static Vector3 RotatePointAroundPivot(Vector3 point, Vector3 pivot, Vector3 angles)
{
    Vector3 dir = point - pivot;
    dir = Quaternion.Euler(angles) * dir;
    point = dir + pivot;
    return point;
}

现在我想从Vector3回到Sexagesimal

public static void Vector3ToSexPosition(Vector3 point, Vector3 punto_osservazione, out float _ar, out float _dec, out float _anni_luce)
{
    .......
}

我认为:anni_luce - > Vector3.Distance(punto_osservazione,point);

但ar和dec如何扭转那部分? 任何想法?

1 个答案:

答案 0 :(得分:0)

我试试这个,但是AR错了:

public static void Vector3ToSexPosition(Vector3 point, Vector3 punto_osservazione, out float _ar, out float _dec, out float _anni_luce)
{
    // distanza
    dista_real = Vector3.Distance(punto_osservazione, point);
    // punto relativo al punto d'osservazione
    Vector3 point_relativo = point - punto_osservazione;
    // ascensione
    float angolo_ar = Math.Abs(Mathf.Atan(point_relativo.z / point_relativo.x) * Mathf.Rad2Deg);
    // declinazione
    float angolo_dec = AngleVectorPlane(point_relativo.normalized, Vector3.up) * Mathf.Rad2Deg;
}

但是不对(AR),如果我理解它不超过180度,那么完全没有Math.Abs​​出现完全错误。

AngleVectorPlane在这里找到... http://wiki.unity3d.com/index.php/3d_Math_functions