示例#1
0
 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();
     }
 }
示例#2
0
        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;
            }

        }
示例#4
0
 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;
 }