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(); }
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(); }
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); } }
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; }
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; } }
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); }