public Vector2 GetVector() { if (this.JointB != null) { return(JointB.OriginalJointPos - JointA.OriginalJointPos); } else if (this.TipEdge != null) { return(TipEdge.GetMidPoint() - JointA.OriginalJointPos); } else { throw new NotSupportedException(); } }
public GlyphBone(GlyphBoneJoint a, EdgeLine tipEdge) { JointA = a; TipEdge = tipEdge; Vector2 midPoint = tipEdge.GetMidPoint(); _len = Math.Sqrt(a.CalculateSqrDistance(midPoint)); EvaluateSlope(); }
void AnalyzeOutsideEdge(EdgeLine d, float centroidX, float centroidY) { //check if edge slope if (!d.IsOutside) return; //--------------------------- switch (d.SlopeKind) { case LineSlopeKind.Horizontal: //check if upper or lower //compare mid point with the centroid d.IsUpper = d.GetMidPoint().Y > centroidY; break; case LineSlopeKind.Vertical: d.IsLeftSide = d.GetMidPoint().X < centroidX; break; } }
static void FindPerpendicular(EdgeLine outsideEdge, EdgeLine inside) { System.Numerics.Vector2 m0 = inside.GetMidPoint(); System.Numerics.Vector2 cut_fromM0; if (MyMath.FindPerpendicularCutPoint(outsideEdge, new System.Numerics.Vector2(m0.X, m0.Y), out cut_fromM0)) { ((OutsideEdgeLine)outsideEdge).SetControlEdge(inside); } else { } outsideEdge._earlyInsideAnalysis = inside._earlyInsideAnalysis = true; }