示例#1
0
    public void InitInfo(AstroCtrl astro)
    {
        el      = astro.el;
        focused = astro;
        float zoomAmount = Mathf.Clamp(1.5f * (astro.isSolar ? el.a : el.aphel_dist), CameraCtrl.instance.zoomMin, CameraCtrl.instance.zoomMax);

        CameraCtrl.instance.SetZoomSize(zoomAmount, AstroMgr.instance.currentMode.Equals(ViewMode.perifocal));
        CalcRM(true);
        OrbitalCircleDraw();
        DrawLine();
        //축 갱신은 한 번만
        p = el.a * (1 - el.e * el.e) * RM[1];
        float r_mag = (p / (1 + el.e * Mathf.Cos(el.Ω * Mathf.PI / 180 + el.ω * Mathf.PI / 180))).magnitude;

        for (int i = 0; i < Axises.Length; i++)
        {
            Axises[i].SetPositions(new Vector3[2] {
                Vector3.zero, 1.3f * r_mag * dirs[i]
            });
            Axises_Pos[i].position = 1.3f * r_mag * dirs[i];
        }
        Degrees[0].text = el.Ω + "˚";
        Degrees[1].text = el.ω + "˚";
        Degrees[2].text = el.i + "˚";
        GetVelocityRate();
        DrawRefresh();
    }
示例#2
0
    public void InitInfo(AstroCtrl astro)
    {
        focused = astro;
        element = astro.el;
        CalcRM();
        //위치 이동
        SetPosition();
        element.e = 0;
        CalcRM();
        float zoomAmount = Mathf.Clamp(1.75f * element.a, CameraCtrl.instance.zoomMin, CameraCtrl.instance.zoomMax);

        CameraCtrl.instance.SetZoomSize(zoomAmount, AstroMgr.instance.currentMode.Equals(ViewMode.ellipse_plane));
        //궤도 그리기
        zeroPoints[1].position = Vector3.zero;
        for (int i = 0; i < DegImages.Length; i++)
        {
            DegImages[i].transform.localScale = element.a * 0.5f * Vector2.one;
        }
        DegImages[2].transform.position = Vector3.zero;
        b = element.a * Mathf.Sqrt(1 - focused.el.e * focused.el.e);
        info_Texts[0].text = focused.el.e.ToString();
        info_Texts[1].text = focused.el.a.ToString();
        info_Texts[2].text = b.ToString();
        info_Texts[3].text = focused.p.magnitude.ToString();
        info_Texts[4].text = focused.el.peri_dist.ToString();
        info_Texts[5].text = focused.el.aphel_dist.ToString();
        OrbitalDraw();
        MeanAnomalyDraw();
        EccentricAnomalyDraw();
        DrawRefresh();
    }
示例#3
0
文件: AstroMgr.cs 项目: hoahn17/NEAs
    void AstroTouch()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out RaycastHit hit, Mathf.Infinity, LM_astro))
        {
            AstroCtrl target = hit.collider.GetComponentInParent <AstroCtrl>();
            SetFocus(target);
        }
    }
示例#4
0
文件: AstroMgr.cs 项目: hoahn17/NEAs
    public void CreateNewAstro(OrbitalElements elements)
    {
        AstroCtrl  newAstro = Instantiate(astroPrepab, astroParent).GetComponent <AstroCtrl>();
        GameObject newText  = Instantiate(textPrepab, planetTextparent);

        newAstro.Init_Astro(elements);
        astros.Add(newAstro);
        ploted_Astro.Add(newAstro);
        newText.GetComponent <PlanetText>().astro = newAstro;
    }
示例#5
0
文件: AstroMgr.cs 项目: hoahn17/NEAs
    public void SetFocus(AstroCtrl target)
    {
        Focused = target;
        switch (currentMode)
        {
        case ViewMode.heliocentric: CameraTr.SetParent(Focused.model); break;

        case ViewMode.perifocal: OnPerifocalMode(true); break;

        case ViewMode.ellipse_plane: OnEllipseMode(true); break;
        }
    }
示例#6
0
    string GetLable(AstroCtrl astro)
    {
        string str = "";

        if (astro.el.name != null)
        {
            if (!astro.el.number.Equals(""))
            {
                str += astro.el.number + " ";
            }
            str += astro.el.name;
        }
        else
        {
            str += astro.el.principal_desig;
        }
        return(str);
    }