求一C#代码,计算点到直线垂直距离 我有已知gps坐标点a(lon,lat),并且有已知线段 bc(两个gps点),如何计算a点到bc线段的垂直距离?在线等 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://topic.csdn.net/u/20101108/09/C329F411-AD48-4C9D-B6A8-97CE14B37E79.html#r_69677016/// <summary> /// 自定义数字解析函数 /// 作者:三角猫 /// 说明:如果输入的字符串为空或非数字开头则返回0,否则返回解析结果 /// </summary> /// <param name="v">输入的字符串</param> /// <returns>解析后的结果</returns> static double CustomNumericParse(string v) { if (string.IsNullOrEmpty(v)) return 0d; //如果输入的字符串为空或NULL,则直接返回0 if (!char.IsDigit(v[0])) return 0d; //如果输入的字符串是非数字开头,直接返回0 string subV = string.Empty; for (int i = 0; i < v.Length; i++) { if (char.IsDigit(v[i]) || (v[i].Equals('.') && !subV.Contains("."))) //从左至右,判断字符串的每位字符是否是数字或小数点,小数点只保留第一个 subV += v[i]; else break; } subV.TrimEnd(new char[] { '.' }); // 如果解析后的子字符串的末位是小数点,则去掉它 double returnV = 0d; if (subV.Contains(".")) // 如果解析结果包含小数点,则根据小数点分两段求值 { string strPointRight = subV.Substring(subV.IndexOf('.') + 1); //小数点右侧部分 subV = subV.Substring(0, subV.IndexOf('.')); //小数点左侧部分 //计算小数点右侧的部分 for (int i = 0; i < strPointRight.Length; i++) { returnV += ((int)strPointRight[i] - 48) / Math.Pow(10, i+1); //(int)strPointRight[i] 是取该字符的ASCII码 } } //计算小数点左侧的部分 int iLen = subV.Length; //小数点左侧部分的长度 for (int i = 0; i < iLen; i++) { returnV += ((int)subV[i] - 48) * Math.Pow(10, iLen - 1 - i); //按位乘以10的幂,并和小数点右侧结果相加 } return returnV; } //使用方法 string a = "123.98adfd"; Console.Write(CustomNumericParse(a)); 你这个代码是什么??我是传gps点进去,为什么要解析字符串啊?还有,你给的那个连接,里面的方法是让做垂直线,我要是能做垂直线我就直接算a点到相交点的距离了,我现在求的就是那个相交点在直线的位置 到线段的距离也就是到直线的垂直距离,这你可以下载下面的文档乍看看:http://www.hz4z.com/tea/SXZ/UploadFiles_5684/200805/2008051308533290.doc但是,GPS得到的是地球表面的球面坐标,短距离可以近似计算,距离远了就要用球面的方法计算了,计算很复杂 谢谢,我最后还是参照了海伦定理,通过面积来计算,还好,我gps点组成的直线差距并不大,我设置成了100米,百米范围内,用平面方式来解还是靠谱的,偏移量不会超过10米,还是只有你认真看了标题的,分给你了 求一个队列数据重新排列的问题,在线等 急求 ZedGraph 怎么用? asp:HyperLink的Text属性通过绑定表达式来判定 麻烦请教个思路!SOS VS2005 Treeview 实现Chekbox勾选后,选中所有包含次节点父节点以及子节点的实现解决 问个问题 高手帮忙看看 生星,散分,顺便问一个问题 请问为什么在页面上显示的数据在源代码中找不到??? 请问如何将ArrayList类型序列化成String?或是其他方法实现? 号外!!!号外!!号外!!笨蛋发现.NET捆定的可怕之处! Socket问题,懂的请进 winfom 界面排版间距控制
/// 自定义数字解析函数
/// 作者:三角猫
/// 说明:如果输入的字符串为空或非数字开头则返回0,否则返回解析结果
/// </summary>
/// <param name="v">输入的字符串</param>
/// <returns>解析后的结果</returns>
static double CustomNumericParse(string v)
{
if (string.IsNullOrEmpty(v)) return 0d; //如果输入的字符串为空或NULL,则直接返回0
if (!char.IsDigit(v[0])) return 0d; //如果输入的字符串是非数字开头,直接返回0
string subV = string.Empty;
for (int i = 0; i < v.Length; i++)
{
if (char.IsDigit(v[i]) || (v[i].Equals('.') && !subV.Contains("."))) //从左至右,判断字符串的每位字符是否是数字或小数点,小数点只保留第一个
subV += v[i];
else
break;
} subV.TrimEnd(new char[] { '.' }); // 如果解析后的子字符串的末位是小数点,则去掉它 double returnV = 0d;
if (subV.Contains(".")) // 如果解析结果包含小数点,则根据小数点分两段求值
{
string strPointRight = subV.Substring(subV.IndexOf('.') + 1); //小数点右侧部分
subV = subV.Substring(0, subV.IndexOf('.')); //小数点左侧部分 //计算小数点右侧的部分
for (int i = 0; i < strPointRight.Length; i++)
{
returnV += ((int)strPointRight[i] - 48) / Math.Pow(10, i+1); //(int)strPointRight[i] 是取该字符的ASCII码
}
} //计算小数点左侧的部分
int iLen = subV.Length; //小数点左侧部分的长度 for (int i = 0; i < iLen; i++)
{
returnV += ((int)subV[i] - 48) * Math.Pow(10, iLen - 1 - i); //按位乘以10的幂,并和小数点右侧结果相加
} return returnV;
} //使用方法
string a = "123.98adfd"; Console.Write(CustomNumericParse(a));
http://www.hz4z.com/tea/SXZ/UploadFiles_5684/200805/2008051308533290.doc但是,GPS得到的是地球表面的球面坐标,短距离可以近似计算,距离远了就要用球面的方法计算了,计算很复杂