반응형

두개의 라인이 만나는 교차점을 구하는 방법입니다.

  • 라인1 : Point pt1, pt2
  • 라인2 : Point pt3, pt4
  • 두 라인이 평행이라면 (-1, -1)을 반환

 

Point getIntersectionPt(Point pt1, Point pt2, Point pt3, Point pt4) {
    int x1 = pt1.x, y1 = pt1.y;
    int x2 = pt2.x, y2 = pt2.y;
    int x3 = pt3.x, y3 = pt3.y;
    int x4 = pt4.x, y4 = pt4.y;
 
    int px= (x1*y2 - y1*x2)*(x3-x4) - (x1-x2)*(x3*y4 - y3*x4);
    int py= (x1*y2 - y1*x2)*(y3-y4) - (y1-y2)*(x3*y4 - y3*x4);
    int p = (x1-x2)*(y3-y4) - (y1-y2)*(x3-x4);
 
    //평행
    if(p == 0) {
        return new Point(-1, -1);
    }
    int x = px/p;
    int y = py/p;
    return new Point(x, y);
}
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기