2013-03-24 69 views
3

我有兩個六邊形形狀 Hex1 and Hex2WPF路徑碰撞檢測?

<Path Stroke="Black" HorizontalAlignment="Left" VerticalAlignment="Top" Fill="Red" StrokeThickness="1" Name="Hex1" Canvas.Left="31.343" Canvas.Top="26.866" Height="163.687" Stretch="Fill" Width="159.134" > 
      <Path.Data> 
       <PathGeometry > 
        <PathGeometry.Figures> 
         <PathFigureCollection > 
          <PathFigure StartPoint="43,0"> 
           <PathFigure.Segments> 
            <PathSegmentCollection > 
             <PolyLineSegment Points="43,0"/> 
             <PolyLineSegment Points="86,25"/> 
             <PolyLineSegment Points="86,75"/> 
             <PolyLineSegment Points="43,100"/> 
             <PolyLineSegment Points="0,75"/> 
             <PolyLineSegment Points="0,25"/> 
             <PolyLineSegment Points="43,0"/> 
            </PathSegmentCollection> 
           </PathFigure.Segments> 
          </PathFigure> 
         </PathFigureCollection> 
        </PathGeometry.Figures> 
       </PathGeometry> 
      </Path.Data> 
     </Path> 
     <Path Stroke="Black" HorizontalAlignment="Left" VerticalAlignment="Top" Fill="Aqua" StrokeThickness="1" Name="Hex2" Canvas.Left="455.224" Canvas.Top="210.448" Height="163.687" Stretch="Fill" Width="159.134" > 
      <Path.Data> 
       <PathGeometry > 
        <PathGeometry.Figures> 
         <PathFigureCollection > 
          <PathFigure StartPoint="43,0"> 
           <PathFigure.Segments> 
            <PathSegmentCollection > 
             <PolyLineSegment Points="43,0"/> 
             <PolyLineSegment Points="86,25"/> 
             <PolyLineSegment Points="86,75"/> 
             <PolyLineSegment Points="43,100"/> 
             <PolyLineSegment Points="0,75"/> 
             <PolyLineSegment Points="0,25"/> 
             <PolyLineSegment Points="43,0"/> 
            </PathSegmentCollection> 
           </PathFigure.Segments> 
          </PathFigure> 
         </PathFigureCollection> 
        </PathGeometry.Figures> 
       </PathGeometry> 
      </Path.Data> 
     </Path> 

我需要將兩個六邊形

殼體1(碰撞) enter image description here

殼體2(碰撞) enter image description here

之間檢測碰撞情況3(不發生碰撞) enter image description here

回答

6

您應該能夠通過FillContainsWithDetail方法的幾何形狀來獲得兩路的交叉點:

var intersectionDetail = path1.Data.FillContainsWithDetail(path2.Data); 

if (intersectionDetail != IntersectionDetail.NotCalculated && 
    intersectionDetail != IntersectionDetail.Empty) 
{ 
    // collision 
}