private void CreateTailPolygon()
 {
     int indexRef = 0;
     int num2 = 0;
     GeoPolygon item = new GeoPolygon();
     int count = this.m_SourceLine.Points.Count;
     this.GetSlopeFromLinePair(count - 2, true, ref indexRef);
     double slope = this.CreateGisLine(this.m_SourceLine.Points[count - 1], this.m_SourceLine.Points[indexRef]).Slope;
     double num5 = (slope == 0.0) ? 1000.0 : (-1.0 / slope);
     GisLine line2 = this.GetPositionLine(this.m_SourceLine.Points[count - 1], this.m_SourceLine.Points[indexRef], slope, this.m_WidthOfStrip / 2.0);
     GeoXYPoint jointPt = line2.GetJointPt(this.GetSlopeFromLinePair(count - 2, true, ref indexRef).PositiveLine);
     GeoXYPoint point2 = line2.GetJointPt(this.GetSlopeFromLinePair(count - 2, true, ref indexRef).OppositeLine);
     item.Points.Add(jointPt);
     item.Points.Add(point2);
     double d = this.GetSlopeFromLinePair(count - 2, true, ref indexRef).PositiveLine.Slope;
     double num7 = this.GetSlopeFromLinePair(count - 3, true, ref num2).PositiveLine.Slope;
     double num8 = Math.Tan((Math.Atan(d) + Math.Atan(num7)) / 2.0);
     if (this.IsSlopeNeedTransform(this.m_SourceLine.Points[num2 + 1], this.m_SourceLine.Points[num2], this.m_SourceLine.Points[indexRef], this.m_SourceLine.Points[indexRef + 1]))
     {
         num8 = -1.0 / num8;
     }
     if (!(this.IsSlopeNeedTransform(this.m_SourceLine.Points[num2 + 1], this.m_SourceLine.Points[num2], this.m_SourceLine.Points[indexRef], this.m_SourceLine.Points[indexRef + 1]) || (Math.Abs((double) (Math.Atan(d) - Math.Atan(num7))) >= 0.8)))
     {
         num8 = -1.0 / num8;
     }
     if (num8 == double.NegativeInfinity)
     {
         num8 = 1000.0;
     }
     line2 = new GisLine(this.m_SourceLine.Points[indexRef], num8);
     this.m_PositivePt = line2.GetJointPt(this.GetSlopeFromLinePair(count - 2, true, ref indexRef).PositiveLine);
     this.m_OppositePt = line2.GetJointPt(this.GetSlopeFromLinePair(count - 2, true, ref indexRef).OppositeLine);
     item.Points.Add(this.m_OppositePt);
     item.Points.Add(this.m_PositivePt);
     this.m_PolyList.Add(item);
 }