Пример #1
0
        public TrackMapDto RotateRight(TrackMapDto trackMapDto)
        {
            TrackGeometryDto trackGeometry = trackMapDto.TrackGeometry;
            TrackMapDto      swapped       = SwapAxis(trackMapDto);

            if (trackGeometry.IsSwappedAxis)
            {
                swapped.TrackGeometry.XCoef = -trackMapDto.TrackGeometry.XCoef;
            }
            else
            {
                swapped.TrackGeometry.YCoef = -trackMapDto.TrackGeometry.YCoef;
            }

            bool reverseXAxis = Math.Sign(trackMapDto.TrackGeometry.XCoef) != Math.Sign(swapped.TrackGeometry.YCoef);
            bool reverseYAxis = Math.Sign(trackMapDto.TrackGeometry.YCoef) != Math.Sign(swapped.TrackGeometry.XCoef);

            SwapGeometries(swapped, reverseXAxis, reverseYAxis);
            return(swapped);
        }
Пример #2
0
        public TrackGeometryDto BuildTrackGeometryDto(TimedTelemetrySnapshots timedTelemetrySnapshots)
        {
            List <TimedTelemetrySnapshot> filteredPoints = Filter(timedTelemetrySnapshots);

            TrackGeometryDto trackGeometryDto = new TrackGeometryDto
            {
                ExporterVersion   = ExporterVersion,
                FullMapGeometry   = GetGeometry(filteredPoints, true),
                Sector1Geometry   = GetSectorGeometry(filteredPoints, x => x.PlayerData.Timing.CurrentSector == 1),
                Sector2Geometry   = GetSectorGeometry(filteredPoints, x => x.PlayerData.Timing.CurrentSector == 2),
                Sector3Geometry   = GetSectorGeometry(filteredPoints, x => x.PlayerData.Timing.CurrentSector == 3),
                StartLineGeometry = ExtractFinishLine(filteredPoints),
                LeftOffset        = filteredPoints.Min(x => x.PlayerData.WorldPosition.X.InMeters) - TrackBounds,
                TopOffset         = filteredPoints.Min(x => x.PlayerData.WorldPosition.Z.InMeters) - TrackBounds,
            };

            trackGeometryDto.Width  = filteredPoints.Max(x => x.PlayerData.WorldPosition.X.InMeters) + TrackBounds - trackGeometryDto.LeftOffset;
            trackGeometryDto.Height = filteredPoints.Max(x => x.PlayerData.WorldPosition.Z.InMeters) + TrackBounds - trackGeometryDto.TopOffset;

            return(trackGeometryDto);
        }