/// <summary> /// Get the coordinary and direction of each ring /// </summary> /// <param name="modelSetting"></param> /// <returns></returns> private static List<RingInfo> GetRingInfo(ModelSetting modelSetting) { List<RingInfo> ringInfos = new List<RingInfo>(); for (int i = 0; i < modelSetting.num_ring; i++ ) { double mStart = modelSetting.axis.AxisPoints[0].Mileage + modelSetting.width * i; double mEnd = mStart + modelSetting.width; TunnelAxisPoint axisP1 = TunnelMappingUtility.MileageToAxisPoint(mStart, modelSetting.axis); TunnelAxisPoint axisP2 = TunnelMappingUtility.MileageToAxisPoint(mEnd, modelSetting.axis); RingInfo info = new RingInfo(); info.x = axisP1.X; info.y = axisP1.Y; info.z = axisP1.Z; info.vecX = axisP2.X - axisP1.X; info.vecY = axisP2.Y - axisP1.Y; info.vecZ = axisP2.Z - axisP1.Z; ringInfos.Add(info); } return ringInfos; }
private static void ChangeLocal(RingInfo info, ShieldTunnel3DResult result) { result.changeLocal = String.Format("local,11,0,{0:0.00},{1:0.00},{2:0.00},{3:0.00},{4:0.00},{5:0.00}", info.x, info.y, info.z, Math.Atan(info.vecY / info.vecX) / Math.PI * 180, 0, Math.Atan(info.vecZ / info.vecX) / Math.PI * 180); }