public static List <TickControlObject> CalcGraphS(TickControlObject S1, TickControlObject S2, long MinTickDert = 1) { if (S1 == null) { return(new List <TickControlObject>()); } if (S2 == null) { return(new List <TickControlObject>()); } if (MinTickDert < 1) { MinTickDert = 1; } //系数计算 //0点坐标 double B = pi / (((double)S2.Tick - (double)S1.Tick)); double C = -B * S1.Tick; double A = Math.Abs(S1.Value - S2.Value) / 2; List <TickControlObject> ret = new List <TickControlObject>(); for (long i = Math.Min(S1.Tick, S2.Tick); i <= Math.Max(S1.Tick, S2.Tick); i += MinTickDert) { if (S2.Value <= S1.Value) { ret.Add(new TickControlObject(i, S2.Value + A + A * Math.Cos(B * i + C))); } else { ret.Add(new TickControlObject(i, S1.Value + A - A * Math.Cos(B * i + C))); } } return(ret); }
public void ReplaceDynLine(List <TickControlObject> DynLine, bool KeepBound = true) { ClearCache(); List <TickControlObject> poj = DynLine; if (poj.Count == 0) { return; } poj.Sort(); TickSortList <TickControlObject> PL = partsObject.DynList; long st = poj[0].Tick; long et = poj[poj.Count - 1].Tick; if (KeepBound) { if (KeepBound) { poj[0] = new TickControlObject(st, getDynValue(st)); poj[poj.Count - 1] = new TickControlObject(et, getDynValue(et)); } } clearDyn(ref PL, st, et); partsObject.DynList.AddRange(poj); partsObject.DynList.Sort(); }
void ParamWindow_ParamAreaMouseDown(object sender, ParamMouseEventArgs e) { if (!_HandleEvents) { DynDragingStatus = PitchView.PitchDragingType.None; DynStP1 = null; DynTmpP0 = null; return; } if (_DynToolsStatus == PitchView.PitchDragingType.None) { return; } if (DynDragingStatus != PitchView.PitchDragingType.None) { return; } if (e.MouseEventArgs.Button != MouseButtons.Left) { return; } DynStP1 = new TickControlObject(e.Tick, e.TallPercent * 100 * Zoom - 100); DynDragingStatus = _DynToolsStatus; if (DynActionBegin != null) { DynActionBegin(DynDragingStatus); } }
void ParamWindow_ParamAreaMouseMove(object sender, ParamMouseEventArgs e) { if (!_HandleEvents) { return; } CurValue = (e.TallPercent * 100 * Zoom); if (DynDragingStatus == PitchView.PitchDragingType.None) { return; } if (e.Tick == DynStP1.Tick) { return; } DynTmpP0 = new TickControlObject(e.Tick, e.TallPercent * 100 * Zoom - DynBase); if (_DynToolsStatus == PitchView.PitchDragingType.None) { ParamWindow.ParentForm.Cursor = Cursors.Arrow; } else { ParamWindow.ParentForm.Cursor = Cursors.Cross; } }
public static List <TickControlObject> CalcLineSilk(TickControlObject S1, TickControlObject S2, long MinTickDert = 1) { if (S1 == null) { return(new List <TickControlObject>()); } if (S2 == null) { return(new List <TickControlObject>()); } if (MinTickDert < 1) { MinTickDert = 1; } TickControlObject M1 = S1; TickControlObject M2 = S2; if (S1.Tick >= S2.Tick) { M1 = S2; M2 = S1; } double pK, pB; if (M1.Value == M2.Value) { pK = 0; } else { pK = (M2.Value - M1.Value) / (M2.Tick - M1.Tick); } pB = M2.Value - pK * M2.Tick; double P1 = pK * M1.Tick + pB; double P2 = pK * M2.Tick + pB; List <TickControlObject> ret = new List <TickControlObject>(); for (long i = M1.Tick; i <= M2.Tick; i += MinTickDert) { ret.Add(new TickControlObject(i, pK * i + pB)); } return(ret); }
void ParamWindow_ParamAreaMouseUp(object sender, ParamMouseEventArgs e) { if (!_HandleEvents) { return; } if (DynDragingStatus == PitchView.PitchDragingType.None) { return; } TickControlObject DynEdP2 = new TickControlObject(e.Tick, e.TallPercent * 100 * Zoom - DynBase); switch (DynDragingStatus) { case PitchView.PitchDragingType.DrawLine: replaceControlLine(ControlMathUtils.CalcLineSilk(DynStP1, DynEdP2)); break; case PitchView.PitchDragingType.DrawGraphJ: replaceControlLine(ControlMathUtils.CalcGraphJ(DynStP1, DynEdP2)); break; case PitchView.PitchDragingType.DrawGraphR: replaceControlLine(ControlMathUtils.CalcGraphR(DynStP1, DynEdP2)); break; case PitchView.PitchDragingType.DrawGraphS: replaceControlLine(ControlMathUtils.CalcGraphS(DynStP1, DynEdP2)); break; case PitchView.PitchDragingType.EarseArea: earseControlLine(DynStP1, DynEdP2); break; } PitchView.PitchDragingType EDStatus = DynDragingStatus; DynDragingStatus = PitchView.PitchDragingType.None; DynStP1 = null; DynTmpP0 = null; if (DynActionEnd != null) { DynActionEnd(EDStatus); } if (_DynToolsStatus == PitchView.PitchDragingType.None) { ParamWindow.ParentForm.Cursor = Cursors.Arrow; } else { ParamWindow.ParentForm.Cursor = Cursors.Cross; } }
public static List <TickControlObject> CalcGraphR(TickControlObject S1, TickControlObject S2, long MinTickDert = 1) { return(CalcGraphJ(S2, S1, MinTickDert)); }
public void earseControlLine(TickControlObject P1, TickControlObject P2) { PartsObject.DynCompiler.ClearDynLine(Math.Min(P1.Tick, P2.Tick), Math.Max(P1.Tick, P2.Tick)); }