//向量求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); }
//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); }
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); }
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); } }
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); }
public void AddDataPoint(Point_t datapoint) => Buffer.Enqueue(datapoint);
// 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); }
public void AddDataPoint(Point_t datapoint) { Dataset[Dataset.Length - 1] = datapoint; Array.Copy(Dataset, 1, Dataset, 0, Dataset.Length - 1); }