示例#1
0
        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;
        }
示例#2
0
        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;

        }