Here you can find the source of intersects(Rectangle aRectangle, Line2D aLine)
public static boolean intersects(Rectangle aRectangle, Line2D aLine)
//package com.java2s; /*//from ww w . j ava 2 s . co m * Copyright 2000-2009 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.awt.*; import java.awt.geom.Line2D; import java.awt.geom.Point2D; public class Main { public static boolean intersects(Rectangle aRectangle, Line2D aLine) { if (aLine == null || aRectangle == null) { return false; } return (!segmentOutsideRectangle(aRectangle, aLine)) && (!segmentInsideRectangle(aRectangle, aLine)); } private static boolean segmentOutsideRectangle(Rectangle aRectangle, Line2D aSegment) { return (!isWithin(aRectangle, aSegment.getP1())) && (!isWithin(aRectangle, aSegment.getP2())); } private static boolean segmentInsideRectangle(Rectangle aRectangle, Line2D aSegment) { return isWithin(aRectangle, aSegment.getP1()) && isWithin(aRectangle, aSegment.getP2()); } public static boolean isWithin(Rectangle aRectangle, Point2D aPoint) { return (aPoint.getX() > aRectangle.getX()) && (aPoint.getX() < aRectangle.getX() + aRectangle.getBounds().width) && ((aPoint.getY() > aRectangle.getY()) && (aPoint.getY() < aRectangle.getY() + aRectangle.getBounds().height)); } }