/// <summary> /// 计算平均迹长 /// </summary> /// <param name="structPlanes">要统计的结构面</param> /// <param name="group">要统计的结构面分组</param> /// <returns>返回平均迹长</returns> public double GetMeanLength(List <StructPlane> structPlanes, PlaneGroup group) { int n0 = 0, n1 = 0, n2 = 0; VisibilityCount(structPlanes, group, ref n0, ref n1, ref n2); return(((double)n1 + 2 * (double)n0) * (Math.PI * App.InputWidth * App.InputHeight) / (2 * (double)structPlanes.Count) / (App.InputWidth + App.InputHeight)); }
/// <summary> /// 计算连通率 /// </summary> /// <param name="structPlanes">要统计的结构面</param> /// <param name="group">要统计的结构面分组</param> /// <returns>返回连通率</returns> public double GetConnectivity(List <StructPlane> structPlanes, PlaneGroup group) { int n0 = 0, n1 = 0, n2 = 0; VisibilityCount(structPlanes, group, ref n0, ref n1, ref n2); return(((double)n1 + 2 * (double)n0) / (2 * (double)structPlanes.Count + (double)n2)); }
/// <summary> /// 结构面分组 /// </summary> /// <param name="structPlanes"></param> /// <param name="group"></param> /// <returns></returns> public List <StructPlane> Classification(List <StructPlane> structPlanes, PlaneGroup group) { List <StructPlane> list = new List <StructPlane>(); foreach (StructPlane plane in structPlanes) { if (plane.Group == group) { list.Add(plane); } } return(list); }
/// <summary> /// 结构面可见性计数 /// </summary> /// <param name="structPlanes"></param> /// <param name="group"></param> /// <param name="n0"></param> /// <param name="n1"></param> /// <param name="n2"></param> private void VisibilityCount(List <StructPlane> structPlanes, PlaneGroup group, ref int n0, ref int n1, ref int n2) { List <StructPlane> list = Classification(structPlanes, group); VisibilityCount(list, ref n0, ref n1, ref n2); }
/// <summary> /// 计算平均间距 /// </summary> /// <param name="structPlanes">要统计的结构面</param> /// <param name="group">要统计的结构面分组</param> /// <returns>返回平均间距</returns> public double GetMeanSpace(List <StructPlane> structPlanes, PlaneGroup group) { List <StructPlane> list = Classification(structPlanes, group); return(GetMeanSpace(list)); }