2D Line - Line Intersect

IntersectLineLine(D3DXVECTOR3 Line1Start, D3DXVECTOR3 Line1End, D3DXVECTOR3 Line2Start, D3DXVECTOR3 Line2End)

{

  float A1, B1, C1, A2, B2, C2, M1, M2, DetInv;

  if ((Line1End.x - Line1Start.x) != 0)
   M1 = (Line1End.y - Line1Start.y) / (Line1End.x - Line1Start.x);
  else
   FALSE;

  if ((Line2End.x - Line2Start.x) != 0)
   M2 = (Line2End.y - Line2Start.y) / (Line2End.x - Line2Start.x);
  else
   FALSE;

  // Compute constants
  A1 = M1;
  A2 = M2;

  B1 = -1;
  B2 = -1;

  C1 = (Line1Start.y - M1 * Line1Start.x);
  C2 = (Line2Start.y - M2 * Line2Start.x);

  // Compute the inverse of the determinate
  DetInv = 1 / (A1 * B2 - A2 * B1);

  // Use Kramers rule to compute Intersect Point
  float IntersectX, IntersectY;
  IntersectX = (B1 * C2 - B2 * C1) * DetInv;
  IntersectY = (A2 * C1 - A1 * C2) * DetInv;

  return TRUE;

} // end Intersect_Lines

신고

'Or.......... > Work' 카테고리의 다른 글

Scene Graph Rendering  (0) 2009.08.27
kd-tree Introduction  (0) 2009.08.27
Grass Rendering  (0) 2009.08.27
Water Rendering  (0) 2009.08.27
Flight Simulator : HUD - LCOSS  (0) 2009.08.27
Line - Line Intersect  (0) 2009.08.27

티스토리 툴바