コード例 #1
0
        //向量求COS
        private float VectorCos(Point_t V1, Point_t V2)
        {
            float mCos = (float)(V1.X * V2.X + V1.Y * V2.Y) /
                         (float)(FastSqrt((float)(V1.X * V1.X + V1.Y * V1.Y)) *
                                 FastSqrt((float)(V2.X * V2.X + V2.Y * V2.Y)));

            return(mCos);
        }
コード例 #2
0
        //Cos值
        private float RectCos(int16_t[] Points)
        {
            //精确计算三点向量角度
            Point_t V1 = new Point_t(Points[2] - Points[1], 2);
            Point_t V2 = new Point_t(Points[1] - Points[0], 2);
            float   cs = VectorCos(V1, V2);

            return(cs);
        }
コード例 #3
0
        private float TwoPointDistance(Point_t p1, Point_t p2)
        {
            int16_t errX = p1.X - p2.X;
            int16_t errY = p1.Y - p2.Y;

            float dis = FastSqrt((float)(errX * errX + errY * errY));

            return(dis);
        }
コード例 #4
0
        private void AddPoints(UInt16 addr, byte[] point)
        {
            Device_t dev;

            dev = GetDevice(addr);
            for (int i = 0; i < point.Length; i++)
            {
                RemovePoint(dev, point[i]);
                Point_t p = new Point_t();
                p.point = point[i];
                dev.PointList.Add(p);
            }
        }
コード例 #5
0
 public UInt16 GetOnOffcID(Point_t point)
 {
     if (point.inCLusterID != null)
     {
         for (int i = 0; i < point.inCLusterID.Length; i++)
         {
             if ((point.inCLusterID != null) && (point.inCLusterID[i] == 0x0006))
             {
                 return(0x0006);
             }
         }
     }
     return(0xFFFF);
 }
コード例 #6
0
 public void AddDataPoint(Point_t datapoint) => Buffer.Enqueue(datapoint);
コード例 #7
0
        // Methods --------------------------------------------------------------------------------
        public void UpdateChart()
        {
            uint    Counter   = 0;
            Point_t Datapoint = new Point_t();

            if (Buffer.Empty)
            {
                Datapoint = LastDataPoint;
                Counter   = 1;
            }
            else
            {
                while (!Buffer.Empty)
                {
                    Point_t Item = Buffer.Dequeue;

                    Datapoint.Temperature += Item.Temperature;
                    Datapoint.Setpoint    += Item.Setpoint;
                    Counter++;
                }

                Datapoint.Temperature /= Counter;
                Datapoint.Setpoint    /= Counter;
                LastDataPoint          = Datapoint;
            }

            Dataset[Dataset.Length - 1] = Datapoint;
            Array.Copy(Dataset, 1, Dataset, 0, Dataset.Length - 1);

            for (int i = 0; i < chart.Series.Count; i++)
            {
                chart.Series[i].Points.Clear();
            }

            for (int i = Dataset.Length - 1; i > 0; i--)
            {
                chart.Series[0].Points.Add(Dataset[i].Temperature);
                chart.Series[1].Points.Add(Dataset[i].Setpoint);
            }

            chart.Series[0].Name = $"Temp ({Dataset[Dataset.Length - 1].Temperature.ToString("0.0")}°C)";
            chart.Series[1].Name = $"Set ({Dataset[Dataset.Length - 1].Setpoint.ToString("0.0")}°C)";

            double MaxYY = 0, MinYY = 0;

            MaxYY = chart.Series[0].Points.FindMaxByValue().YValues[0];
            MinYY = chart.Series[0].Points.FindMinByValue().YValues[0];

            if (chart.Series[1].Points.FindMaxByValue().YValues[0] > MaxYY)
            {
                MaxYY = chart.Series[1].Points.FindMaxByValue().YValues[0];
            }

            if (chart.Series[1].Points.FindMinByValue().YValues[0] < MinYY)
            {
                MinYY = chart.Series[1].Points.FindMinByValue().YValues[0];
            }

            chart.ChartAreas[0].AxisY2.Maximum = Math.Round(MaxYY + 10, 0);
            chart.ChartAreas[0].AxisY2.Minimum = Math.Round((MinYY < 0) ? MinYY - 10 : 0, 0);
        }
コード例 #8
0
 public void AddDataPoint(Point_t datapoint)
 {
     Dataset[Dataset.Length - 1] = datapoint;
     Array.Copy(Dataset, 1, Dataset, 0, Dataset.Length - 1);
 }