private void refreshVehicleLoaction(uctlNewVehicle vh, double sec_dis, sc.ProtocolFormat.OHTMessage.DriveDirction driveDirction) { //if (driveDirction == sc.ProtocolFormat.OHTMessage.DriveDirction.DriveDirReverse) //{ // if (RealDistance >= sec_dis)//確保不會一減 ,就變負的 // sec_dis = RealDistance - sec_dis; // else // sec_dis = 0; //} double distance_scale = 1; double distanceTemp = 0; if (RealDistance > 10) { distance_scale = sec_dis / RealDistance; } else { } distanceTemp = Distance * distance_scale; int railInterval = 0; uctlRail matchRail = findTheMatchingRail((int)distanceTemp, out railInterval); int railInterval_Pix = (int)BCUtility.RealLengthToPixelsWidthByScale((double)railInterval); //int Location_X = 0; //int Location_Y = 0; KeyValuePair <uctlRail, E_RAIL_DIR> keyValuePairTemp = uctlRails.Where(keyValue => keyValue.Key == matchRail).SingleOrDefault(); if (keyValuePairTemp.Equals(default(KeyValuePair <uctlRail, E_RAIL_DIR>))) { return; } E_RAIL_DIR railDIR = keyValuePairTemp.Value; //switch (RailDircetion) switch (railDIR) { case E_RAIL_DIR.F: WalkingForward(vh, distance_scale, matchRail, railInterval_Pix); break; case E_RAIL_DIR.R: ReverseWalking(vh, distance_scale, matchRail, railInterval_Pix); break; } }
public GroupRails(string section_id, double real_sec_distance, E_RAIL_DIR rail_dir, string seg_num, E_RAIL_DIR seg_dir) { Section_ID = section_id; RealDistance = real_sec_distance; RailDircetion = rail_dir; Segment_Num = seg_num; SegDircetion = seg_dir; //uctlRails = new List<uctlRail>(); uctlRails = new List <KeyValuePair <uctlRail, E_RAIL_DIR> >(); m_pPoints = new PointObject[2]; }
private void refreshVehicleLoaction(uctlVehicle vh, double sec_dis) { double distance_scale = 1; double distanceTemp = 0; if (RealDistance > 10) { distance_scale = sec_dis / RealDistance; } else { } distanceTemp = Distance * distance_scale; int railInterval = 0; uctlRail matchRail = findTheMatchingRail((int)distanceTemp, out railInterval); int railInterval_Pix = (int)BCUtility.RealLengthToPixelsWidthByScale((double)railInterval); int Location_X = 0; int Location_Y = 0; KeyValuePair <uctlRail, E_RAIL_DIR> keyValuePairTemp = uctlRails.Where(keyValue => keyValue.Key == matchRail).SingleOrDefault(); if (keyValuePairTemp.Equals(default(KeyValuePair <uctlRail, E_RAIL_DIR>))) { return; } E_RAIL_DIR railDIR = keyValuePairTemp.Value; //switch (RailDircetion) switch (railDIR) { case E_RAIL_DIR.F: Location_X = (int)matchRail.p_Points[0].RealPointf.X; Location_Y = (int)matchRail.p_Points[0].RealPointf.Y; if (matchRail.p_RailType == E_RAIL_TYPE.Straight_Horizontal) { vh.PrcSetLocation(Location_X + railInterval_Pix, Location_Y); } else if (matchRail.p_RailType == E_RAIL_TYPE.Straight_Vertical) { vh.PrcSetLocation(Location_X, Location_Y + railInterval_Pix); } else { vh.PrcSetLocation((int)matchRail.p_RealCenterPoint.X, (int)matchRail.p_RealCenterPoint.Y); } break; case E_RAIL_DIR.R: Location_X = (int)matchRail.p_Points[1].RealPointf.X; Location_Y = (int)matchRail.p_Points[1].RealPointf.Y; if (matchRail.p_RailType == E_RAIL_TYPE.Straight_Horizontal) { vh.PrcSetLocation(Location_X - railInterval_Pix, Location_Y); } else if (matchRail.p_RailType == E_RAIL_TYPE.Straight_Vertical) { vh.PrcSetLocation(Location_X, Location_Y - railInterval_Pix); } else { vh.PrcSetLocation((int)matchRail.p_RealCenterPoint.X, (int)matchRail.p_RealCenterPoint.Y); } break; } }