有没有人知道简单的短代码可以在不使用附加库的情况下转换它?
发布于 2010-07-06 15:29:13
如下所示:
double coord = 59.345235;
int sec = (int)Math.Round(coord * 3600);
int deg = sec / 3600;
sec = Math.Abs(sec % 3600);
int min = sec / 60;
sec %= 60;
编辑:添加了Abs调用,以便它也适用于负角度。
发布于 2010-07-06 15:43:58
你可以使用timespan:(很棘手,但它是有效的)
double coord = 123.312312;
var ts = TimeSpan.FromHours(Math.Abs(coord))
int degrees = Math.Sign(coord) * Math.Floor(ts.TotalHours);
int minutes = ts.Minutes;
int seconds = ts.Seconds;
发布于 2010-07-06 15:30:26
我从你的问题中推断出你想要从笛卡尔坐标转换到极坐标。
如果是这样的话,你需要的基本公式是:
r=x2+y2=√
θ= atan( y/x)
其中r是距离,θ是从x=0(关于原点)的角度
这有帮助吗?
https://stackoverflow.com/questions/3187678
复制