//kadzalik2020 //Menentukan GST dari UT public static int [] UtKeGst(double julianday, int zonawaktu) { /* Saya nggak tau alurnya gimana, tapi entah kenapa kodenya berhasil * jadi. kalau error silahkan dicari sendiri ya ...hehehe*/ double pukuljd_0_UT = (julianday % 1 - 0.5) * 24; double UT = pukuljd_0_UT - zonawaktu; double julianday_0_UT = ((int)julianday) + 0.5; double T = (julianday_0_UT - 2451545) / 36525; double GST_0_UT = 6.6973745583 + 2400.0513369072 * T + 0.0000258622 * T * T; //Fungsi MODULO while (GST_0_UT > 24) { GST_0_UT -= 24; } //Bila nilai Positif lebih dari 24, akan dikurang 24 terus menerus sampai nilai dibawah 24 while (GST_0_UT < 0) { GST_0_UT += 24; } //Bila nilai negatif, akan ditambah 24 terus menerus sampai positif double GST_UT = GST_0_UT + 1.0027379035 * UT; //nilai sidereal time pada pukul UT if (GST_UT >= 24) { GST_UT -= 24; } int[] GST_sexagesimal = Konversi.DesimalKeDerajat(GST_UT); return(new int [] { 0, GST_sexagesimal[1], GST_sexagesimal[2], GST_sexagesimal[3] }); }
public static int [] GstKeUt(double julianday, double jam_gst, double menit_gst, double detik_gst) { double julianday_0_UT = ((int)julianday) + 0.5; double pukul_desimal = Konversi.DerajatKeDesimal(jam_gst, menit_gst, detik_gst); double T = (julianday_0_UT - 2451545) / 36525; double GST_0_UT = 6.6973745583 + 2400.0513369072 * T + 0.0000258622 * T * T; double UT_GST = pukul_desimal - GST_0_UT; //Fungsi MODULO while (UT_GST > 24) { UT_GST -= 24; } //Bila nilai Positif lebih dari 24, akan dikurang 24 terus menerus sampai nilai dibawah 24 while (UT_GST < 0) { UT_GST += 24; } //Bila nilai negatif, akan ditambah 24 terus menerus sampai positif UT_GST = UT_GST / 1.00273790935; int[] UT_sexagesimal = Konversi.DesimalKeDerajat(UT_GST); return(new int[] { 0, UT_sexagesimal[1], UT_sexagesimal[2], UT_sexagesimal[3] }); }
// Update is called once per frame public void Update() { Vector2 syakul = Syakul.transform.position; Vector2 awalQous = Markaz.transform.position; Vector2 dir = awalQous - syakul; angle = (Mathf.Atan2(dir.y, -dir.x) * Mathf.Rad2Deg); string nilai;//Qous //mencari nilai sinus dari angle float nilaiSittini = Mathf.Abs(Mathf.Cos(angle * Mathf.Deg2Rad)); string sittini; float nilaiJaibT = Mathf.Abs(Mathf.Sin(angle * Mathf.Deg2Rad)); string JaibT; float posisiSitini = -200.872f * nilaiSittini;//200.294 adalah nilai batas wilayah rubuk dalam app ini float posisiJaibT = -200.872f * nilaiJaibT; if (angle < 0)//apabila melebihi wilayah rubuk maka disetel maks (90) { nilai = 90 + "\u00B0 " + "00" + "\u2032 "; sittini = 60 + "\u00B0 " + "00" + "\u2032 "; JaibT = "00" + "\u00B0 " + "00" + "\u2032 "; Anchor.localEulerAngles = new Vector3(0, 0, -90); TitikSittini.transform.localPosition = new Vector3(-200.294f, 10f, 0);//menentukan posisi titik sittini TitikJaibT.transform.localPosition = new Vector3(10f, 0, 0); } else { if (angle >= 90.0f)//apabila nggak melebihi wilayah rubuk //Qous { int derajat = Konversi.DesimalKeDerajat(angle % 90)[1]; int menit = Konversi.DesimalKeDerajat(angle % 90)[2]; nilai = derajat.ToString("D2") + "\u00B0 " + menit.ToString("D2") + "\u2032 "; //Sittini int derajatSt = Konversi.DesimalKeDerajat(nilaiSittini * 60)[1]; int menitSt = Konversi.DesimalKeDerajat(nilaiSittini * 60)[2]; sittini = derajatSt.ToString("D2") + "\u00B0" + menitSt.ToString("D2") + "\u2032"; //Jaib T int derajatJt = Konversi.DesimalKeDerajat(nilaiJaibT * 60)[1]; int menitJt = Konversi.DesimalKeDerajat(nilaiJaibT * 60)[2]; JaibT = derajatJt.ToString("D2") + "\u00B0" + menitJt.ToString("D2") + "\u2032"; Anchor.localEulerAngles = new Vector3(0, 0, -(angle - 90)); //memutar pasak TitikSittini.transform.localPosition = new Vector3(posisiSitini, 10f, -0.2f); //menentukan posisi titik sittini TitikJaibT.transform.localPosition = new Vector3(10f, posisiJaibT, -0.2f); } else {//apabila kurang dar wilayah rubuk maka disetel minimalnilai (0) nilai = "00" + "\u00B0" + "00" + "\u2032 "; sittini = "00" + "\u00B0 " + "00" + "\u2032 "; JaibT = "60" + "\u00B0 " + "00" + "\u2032 "; Anchor.localEulerAngles = new Vector3(0, 0, 0); TitikSittini.transform.localPosition = new Vector3(0, 10f, 0);//menentukan posisi titik sittini TitikJaibT.transform.localPosition = new Vector3(10f, -200.872f, 0); } } text.text = "Qous : " + nilai; textSittini.text = "Sittini: " + sittini; textJaibT.text = "Jaib T: " + JaibT; }
private float angle; //sudut antara Syakul dan Markaz public void Update() { //ambil nilai dari user float nilaiInput = (float)Konversi.DerajatKeDesimal(double.Parse(nilaiDerajat.text), double.Parse(nilaiMenit.text), 0); Vector2 syakul = Syakul.transform.position; Vector2 awalQous = Markaz.transform.position; Vector2 dir = awalQous - syakul;//menghitung vectornya dari Markaz dikurangi syakul, supaya Origin sudutnya berada pada Markaz angle = (Mathf.Atan2(dir.y, -dir.x) * Mathf.Rad2Deg); if (nilaiInput > 60) { nilaiInput %= 60; } float nilaiSittini = Mathf.Sin(angle % 90 * Mathf.Deg2Rad) * nilaiInput / 60; float nilaiJaibT = Mathf.Cos(angle % 90 * Mathf.Deg2Rad) * nilaiInput / 60; float angleMuri = (Mathf.Asin(nilaiSittini) * Mathf.Rad2Deg); float OousInputMuri = (Mathf.Asin(nilaiInput / 60) * Mathf.Rad2Deg); nilaiInput /= 60; float posisiMuri = -49.49f * nilaiInput;//-49.49f adalah nilai vector y batas daerah jaib T rubuk Muri.transform.localPosition = new Vector3(0, posisiMuri, 0f); float posisiMuriS = -200.872f * nilaiSittini; float posisiMuriJ = -200.872f * nilaiJaibT; string nilai; string nilaiMuriS; string nilaiMuriT; if (angle < 0) { if (angleMuri == 0) { TitikQousMuri.localEulerAngles = new Vector3(0, 0, -OousInputMuri); } else { TitikQousMuri.localEulerAngles = new Vector3(0, 0, angleMuri); } MuriSittini.transform.localPosition = new Vector3(-200.872f * nilaiInput, 10f, 0); MuriJaibT.transform.localPosition = new Vector3(10f, 0, 0); int derajat = Konversi.DesimalKeDerajat(angleMuri % 90)[1]; int menit = Konversi.DesimalKeDerajat(angleMuri % 90)[2]; nilai = derajat.ToString("D2") + "\u00B0 " + menit.ToString("D2") + "\u2032 "; int derajatS = Konversi.DesimalKeDerajat(nilaiInput * 60)[1]; int menitS = Konversi.DesimalKeDerajat(nilaiInput * 60)[2]; nilaiMuriS = derajatS.ToString("D2") + "\u00B0 " + menitS.ToString("D2") + "\u2032 "; nilaiMuriT = "00" + "\u00B0 " + "00" + "\u2032"; } else { if (angle >= 90.0f) { TitikQousMuri.localEulerAngles = new Vector3(0, 0, -angleMuri); Debug.Log(-angleMuri + ""); MuriSittini.transform.localPosition = new Vector3(posisiMuriS, 10f, 0); MuriJaibT.transform.localPosition = new Vector3(10f, posisiMuriJ, 0); int derajat = Konversi.DesimalKeDerajat(angleMuri % 90)[1]; int menit = Konversi.DesimalKeDerajat(angleMuri % 90)[2]; nilai = derajat.ToString("D2") + "\u00B0 " + menit.ToString("D2") + "\u2032 "; int derajatS = Konversi.DesimalKeDerajat(nilaiSittini * 60)[1]; int menitS = Konversi.DesimalKeDerajat(nilaiSittini * 60)[2]; nilaiMuriS = derajatS.ToString("D2") + "\u00B0 " + menitS.ToString("D2") + "\u2032 "; int derajatT = Konversi.DesimalKeDerajat(nilaiJaibT * 60)[1]; int menitT = Konversi.DesimalKeDerajat(nilaiJaibT * 60)[2]; nilaiMuriT = derajatT.ToString("D2") + "\u00B0 " + menitT.ToString("D2") + "\u2032 "; } else { TitikQousMuri.localEulerAngles = new Vector3(0, 0, 0); MuriSittini.transform.localPosition = new Vector3(0, 10f, 0); MuriJaibT.transform.localPosition = new Vector3(10f, -200.872f * nilaiInput, 0); nilai = "00" + "\u00B0 " + "00" + "\u2032"; nilaiMuriS = "00" + "\u00B0 " + "00" + "\u2032"; int derajatJ = Konversi.DesimalKeDerajat(nilaiInput * 60)[1]; int menitJ = Konversi.DesimalKeDerajat(nilaiInput * 60)[2]; nilaiMuriT = derajatJ.ToString("D2") + "\u00B0 " + menitJ.ToString("D2") + "\u2032 "; } } TextQousMuri.text = "Qous Muri:" + "\n" + nilai + "\n\n" + "Sittini Muri:" + "\n" + nilaiMuriS + "\n\n" + "Jaib T Muri:" + "\n" + nilaiMuriT; //Debug.Log("Sitini "+nilaiSittini+"\n"+"JaibT :" +nilaiJaibT+" Sudut :" +(-angleMuri)); }