public Vector3 InterpolateTripPosition(int now, float max_speed) { foreach (TripSegment t in _Trip) { if (t.IsWithinThisSegment(now)) { AGT_LinearMotion motion_calculator = new AGT_LinearMotion(t.StartPosition.X, t.StartPosition.Y, t.StartPosition.Z); motion_calculator.MoveTo(t.EndPosition.X, t.EndPosition.Y, t.EndPosition.Z, (t.Throttle * max_speed)); return motion_calculator.InterpolatePosition(t.CalculateSegmentOffset(now)); } } //return Vector3.Empty; return _Trip[0].StartPosition; }
public AGT_LinearMotion CreateMotionCalculator(MoveEvent evt) { if (_current_positions.ContainsKey(evt.Name) && evt != MoveEvent.Empty) { AGT_LinearMotion motion_calculator = new AGT_LinearMotion(_current_positions[evt.Name].X, _current_positions[evt.Name].Y, _current_positions[evt.Name].Z); motion_calculator.MoveTo(evt.X, evt.Y, evt.Z, EventSpeed(evt)); return motion_calculator; } return null; }