public override int GetHashCode()
 {
     return(BandColor.GetHashCode() +
            BandSpace +
            BandCount +
            Multiplier.GetHashCode() +
            BandWidth.GetHashCode() +
            BandRadius.GetHashCode());
 }
Exemple #2
0
 /// <summary>
 /// Resets this indicator and all sub-indicators (StandardDeviation, LowerBand, MiddleBand, UpperBand, BandWidth, %B)
 /// </summary>
 public override void Reset()
 {
     StandardDeviation.Reset();
     MiddleBand.Reset();
     UpperBand.Reset();
     LowerBand.Reset();
     BandWidth.Reset();
     PercentB.Reset();
     base.Reset();
 }
 public TransceiverSettings(
     RadioModemKind radioModem,
     uint frequency,
     BandWidth bandWidth,
     SpreadingFactor spreadingFactor,
     CodingRate codingRate,
     ushort symbolTimeout,
     bool crcEnabled,
     bool enableLowDataRateOptimize,
     LoraSyncWord loraSyncWord)
 {
     RadioModem                = radioModem;
     Frequency                 = frequency;
     BandWidth                 = bandWidth;
     SpreadingFactor           = spreadingFactor;
     CodingRate                = codingRate;
     SymbolTimeout             = symbolTimeout;
     CrcEnabled                = crcEnabled;
     EnableLowDataRateOptimize = enableLowDataRateOptimize;
     LoraSyncWord              = loraSyncWord;
 }
Exemple #4
0
        private void InitModel()
        {
            _signals = new ObservableCollection <Signal>();
            var signal = new Signal()
            {
                Id = 0x00, Name = "阵列信号"
            };

            _signals.Add(signal);
            _signals.Add(new Signal()
            {
                Id = 0x01, Name = "标校信号"
            });
            SelectedSignal = signal;
            _bandWidths    = new ObservableCollection <BandWidth>();
            var bandWidth = new BandWidth()
            {
                Id = 0x00, Name = "2MHz"
            };

            SelectedKd = bandWidth;
            _bandWidths.Add(bandWidth);
            _bandWidths.Add(new BandWidth()
            {
                Id = 0x01, Name = "60MHz"
            });
            _signalForms = new ObservableCollection <SignalForm>();
            var signalform = new SignalForm()
            {
                Id = 0x00, Name = "梳状谱"
            };

            SelectSignalForm = signalform;
            _signalForms.Add(signalform);
            _signalForms.Add(new SignalForm()
            {
                Id = 0x01, Name = "单载波"
            });
        }
        private static LoraRegisterModemConfig1.BandWidthEnum ConvertBandWidth(BandWidth bandWidth)
        {
            switch (bandWidth)
            {
            case BandWidth.BandWidth_007_80_kHz:
                return(LoraRegisterModemConfig1.BandWidthEnum.BandWidth_007_80_kHz);

            case BandWidth.BandWidth_010_40_kHz:
                return(LoraRegisterModemConfig1.BandWidthEnum.BandWidth_010_40_kHz);

            case BandWidth.BandWidth_015_60_kHz:
                return(LoraRegisterModemConfig1.BandWidthEnum.BandWidth_015_60_kHz);

            case BandWidth.BandWidth_020_80_kHz:
                return(LoraRegisterModemConfig1.BandWidthEnum.BandWidth_020_80_kHz);

            case BandWidth.BandWidth_031_25_kHz:
                return(LoraRegisterModemConfig1.BandWidthEnum.BandWidth_031_25_kHz);

            case BandWidth.BandWidth_041_70_kHz:
                return(LoraRegisterModemConfig1.BandWidthEnum.BandWidth_041_70_kHz);

            case BandWidth.BandWidth_062_50_kHz:
                return(LoraRegisterModemConfig1.BandWidthEnum.BandWidth_062_50_kHz);

            case BandWidth.BandWidth_125_00_kHz:
                return(LoraRegisterModemConfig1.BandWidthEnum.BandWidth_125_00_kHz);

            case BandWidth.BandWidth_250_00_kHz:
                return(LoraRegisterModemConfig1.BandWidthEnum.BandWidth_250_00_kHz);

            case BandWidth.BandWidth_500_00_kHz:
                return(LoraRegisterModemConfig1.BandWidthEnum.BandWidth_500_00_kHz);

            default:
                throw new ArgumentOutOfRangeException(nameof(bandWidth), bandWidth, null);
            }
        }
        public override IEnumerator ReceivePayload(VisualPayload payload)
        {
            foreach (var entry in Scope.GetEntries(payload.Data))
            {
                var generatedGradient = OpcodeToTextureBanding.GenerateTextureBanding(
                    OpcodeHistogram.GetValue(entry),
                    PrimaryColor.GetValue(entry),
                    PrimaryImpactOnBands.GetValue(entry),
                    NumberOfBands.GetValue(entry),
                    BandWidth.GetValue(entry),
                    BandSaturation.GetValue(entry),
                    BandValue.GetValue(entry),
                    BandEdgeWidth.GetValue(entry));

                BandingTarget.SetValue(generatedGradient, entry);
            }

            var iterator = Router.TransmitAll(payload);

            while (iterator.MoveNext())
            {
                yield return(null);
            }
        }
Exemple #7
0
        public void CalcType(ObjectId[] ids)
        {
            Type             = null;
            BandSpacing      = null;
            BandWidth        = null;
            BandStart1       = null;
            BandStart2       = null;
            ProcessingAngle1 = null;
            ProcessingAngle2 = null;

            if (ids.Length < 2)
            {
                Acad.Alert("Выберите 2 элемента");
                return;
            }
            var contourPoints = GetContour().GetPolyPoints().ToArray();
            var curves        = ids.QOpenForRead <Curve>();
            var circles       = curves.OfType <Circle>().ToArray();

            if (circles.Any())
            {
                var radius = circles.Max(p => p.Radius);
                circles = circles.Where(p => p.Radius == radius).ToArray();
                const double Delta = 1;
                radius += Delta;
                var vector = circles[1].Center - circles[0].Center;
                var center = (circles[1].Center.X < circles[0].Center.X ? circles[1] : circles[0]).Center;
                BandSpacing = radius * 2;
                BandWidth   = vector.Length - BandSpacing.Value;
                if (vector.IsParallelTo(Vector3d.XAxis) || vector.IsPerpendicularTo(Vector3d.XAxis))
                {
                    Type             = "Конусы прямые";
                    ProcessingAngle1 = 0;
                    ProcessingAngle2 = 90;
                    BandStart1       = center.Y + radius - contourPoints[0].Y;
                    BandStart2       = center.X + radius - contourPoints[0].X;
                }
                else
                {
                    Type = "Конусы диагональные";
                    var ray = new Ray {
                        BasePoint = center
                    };

                    ProcessingAngle1 = 135;
                    ray.UnitDir      = Vector3d.XAxis.RotateBy(Graph.ToRad(ProcessingAngle1.Value), Vector3d.ZAxis);
                    BandStart1       = ray.GetDistToPoint(contourPoints[0], true) + radius;

                    ProcessingAngle2 = 45;
                    ray.UnitDir      = Vector3d.XAxis.RotateBy(Graph.ToRad(ProcessingAngle2.Value), Vector3d.ZAxis);
                    BandStart2       = ray.GetDistToPoint(contourPoints[3], true) % vector.Length + radius;
                }
                RoundParams();
                return;
            }
            var lines = curves.OfType <Line>().ToArray();

            if (lines.Length == 8)
            {
                Type             = "Квадраты";
                ProcessingAngle1 = 0;
                ProcessingAngle2 = 90;
                BandSpacing      = lines.First().Length;
                var points = lines.SelectMany(p => Graph.GetStartEndPoints(p));
                var point1 = new Point3d(points.Min(p => p.X), points.Min(p => p.Y), 0);
                BandStart1 = point1.Y + BandSpacing - contourPoints[0].Y;
                BandStart2 = point1.X + BandSpacing - contourPoints[0].X;
                var point2 = new Point3d(points.Max(p => p.X), points.Max(p => p.Y), 0);
                var vector = point2 - point1;
                BandWidth = (vector.X > vector.Y ? point2.X - point1.X : point2.Y - point1.Y) - BandSpacing * 2;

                RoundParams();
                return;
            }
            if (lines.Length == 3 || lines.Length == 4)
            {
                var vector = lines[0].Delta;
                if (vector.IsParallelTo(Vector3d.XAxis, Tolerance.Global))
                {
                    ProcessingAngle1 = 0;
                }
                if (vector.IsParallelTo(Vector3d.XAxis.RotateBy(Math.PI / 4, Vector3d.ZAxis)))
                {
                    ProcessingAngle1 = 45;
                }
                if (vector.IsParallelTo(Vector3d.YAxis, Tolerance.Global))
                {
                    ProcessingAngle1 = 90;
                }
                if (vector.IsParallelTo(Vector3d.XAxis.RotateBy(Math.PI * 3 / 4, Vector3d.ZAxis)))
                {
                    ProcessingAngle1 = 45;
                }
                if (ProcessingAngle1.HasValue)
                {
                    Type = $"Полосы {ProcessingAngle1}";
                    var point = ProcessingAngle1 == 45 ? contourPoints[3] : contourPoints[0];
                    var dist  = lines.Select(p => p.GetDistToPoint(point)).OrderBy(p => p).ToArray();
                    var s1    = dist[1] - dist[0];
                    var s2    = dist[2] - dist[1];
                    BandWidth   = Math.Max(s1, s2);
                    BandSpacing = Math.Min(s1, s2);
                    BandStart1  = (s1 > s2 ? dist[0] : dist[1]) % (BandWidth + BandSpacing);

                    RoundParams();
                    return;
                }
            }
            Acad.Alert("Тип плитки не распознан");

            void RoundParams()
            {
                BandSpacing = BandSpacing?.Round(3);
                BandWidth   = BandWidth?.Round(3);
                BandStart1  = BandStart1?.Round(3);
                BandStart2  = BandStart2?.Round(3);
            }
        }
Exemple #8
0
 /// <summary>
 /// 选择带宽
 /// </summary>
 /// <param name="bandWidth"></param>
 private void OnSelectedKd(BandWidth bandWidth)
 {
     RadioVm.SelectedKd = bandWidth;
 }