public BezierCurve(BindingList <Vector2> vectors, Color Color, string name = "Krzywa beziera") : base(vectors, Color, name ?? "Krzywa beziera") { if (PointsToDraw == null && vectors != null) { PointsToDraw = DeCasteljau.drawCasteljau(Util.Vector2toPoints(Vectors)); } }
private void elevateButton_Click(object sender, EventArgs e) { List <Vector2> newPoints = DeCasteljau.ElevateDegree(Curves[SelectedCurve].Vectors); Curves[SelectedCurve].Vectors.ListChanged -= Curves[SelectedCurve].VectorsListChangedEvent; Curves[SelectedCurve].Vectors.Clear(); foreach (Vector2 point in newPoints) { Curves[SelectedCurve].Vectors.Add(point); } Curves[SelectedCurve].Vectors.ListChanged += Curves[SelectedCurve].VectorsListChangedEvent; Draw(); }
private void decreaseButton_Click(object sender, EventArgs e) { if (Curves[SelectedCurve].Vectors.Count < 4) { errorBox.Text = "Krzywa musi mieć co najmniej 4 punkty kontrolne"; return; } List <Vector2> newPoints = DeCasteljau.DecreaseDegree(Curves[SelectedCurve].Vectors); Curves[SelectedCurve].Vectors.ListChanged -= Curves[SelectedCurve].VectorsListChangedEvent; Curves[SelectedCurve].Vectors.Clear(); foreach (Vector2 point in newPoints) { Curves[SelectedCurve].Vectors.Add(point); } Curves[SelectedCurve].Vectors.ListChanged += Curves[SelectedCurve].VectorsListChangedEvent; Draw(); }
internal override Tuple <CurveAbstract, CurveAbstract> Split(string splitValue) { float u = float.Parse(splitValue); return(DeCasteljau.SplitBezier(this, u)); }
public override void VectorsListChangedEvent(object sender, ListChangedEventArgs e) { PointsToDraw = DeCasteljau.drawCasteljau(Util.Vector2toPoints(Vectors)); }