void InitialData() { Beeline beeline = new Beeline(); beeline.lineBase.Color = Color.red; beeline.lineBase.Width = 2; beeline.Start.x = -100; beeline.End.x = 100; beeline.End.y = 100; ArcLine arc = new ArcLine(); arc.Closed = true; arc.lineBase.Color = Color.green; arc.lineBase.Width = 2; arc.Pos = new Vector2(0, 220); arc.Scale = new Vector2(1, 0.6f); arc.Dic = 44; arc.Angle = 160; arc.Precision = 0.05f; arc.Radius = 300; BzierLine bzier = new BzierLine(); bzier.lineBase.Color = Color.blue; bzier.lineBase.Width = 2; bzier.A = new Vector2(-11, -22); bzier.B = new Vector2(0, -220); bzier.C = new Vector2(100, 46); bzier.Precision = 0.04f; view.Line.AddLine(ref beeline); view.Line.AddLine(ref arc); view.Line.AddLine(ref bzier); }
/// <summary> /// 添加一条贝塞尔曲线 /// </summary> /// <param name="line"></param> public void AddLine(ref BzierLine line) { if (bzierLines == null) { bzierLines = new List <BzierLine>(); } if (line.Precision <= 0) { line.Precision = 0.01f; } bzierLines.Add(line); m_dirty = true; }
void CreateBzier(ref BzierLine line) { int Part = (int)(1 / line.Precision); float t = line.Precision; Vector2 s = line.A; for (int i = 0; i < Part; i++) { var e = MathH.BezierPoint(t, ref line.A, ref line.B, ref line.C); CreateVert(ref s, ref e, ref vertInfo, ref trisInfo, ref line.lineBase.Color, line.lineBase.Width); s = e; t += line.Precision; } CreateVert(ref s, ref line.C, ref vertInfo, ref trisInfo, ref line.lineBase.Color, line.lineBase.Width); }