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如何扭转那部分? 任何想法?
答案 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