2017-08-18 12 views
1

enter image description hereインターセプトは

Aが長方形と原点、およびBの座標の中心点があることを考えると、どのようにあなたは何点ラインで見つけるか、以下の図を考えてみましょうABは長方形と交差しますか?おかげさまで

+2

なぜなら、フレーム化されているので、ジオメトリの問題です。 –

+0

ジオメトリの質問はどこでできますか? –

+0

math.stackexchange.comを試してみましょう。しかし、質問をする前にまずツアーを見てください。 P.S. Javaと関係のない質問には「java」タグを使用しないでください。 – ajb

答えて

1

交差点が中央に相対座標(ポイント):

dx = B.X - A.X 
dy = B.Y - A.Y 
if Width * Abs(dy) < Height * Abs(dx) then 
    x = Sign(dx) * Width/2 
    y = dy * x/dx 
else 
    y = Sign(dy) * Height/2 
    x = dx * y/dy 
0

私はJTSトポロジースイート(https://github.com/locationtech/jts)を使用することをお勧めします:私は、オフトピックとして、この質問を閉じるために投票しています

// create a rectangle from center point, width and height 
public static LinearRing createRectangle(Coordinate center, double width, double height){ 
    Coordinate upperLeft = new Coordinate(center.x - (width/2), center.y + (height/2)); 
    Coordinate upperRight = new Coordinate(center.x + (width/2), center.y + (height/2)); 
    Coordinate lowerRight = new Coordinate(center.x + (width/2), center.y - (height/2)); 
    Coordinate lowerLeft = new Coordinate(center.x - (width/2), center.y - (height/2)); 
    LinearRing rectangle = new GeometryFactory().createLinearRing(new Coordinate[]{upperLeft, upperRight, lowerRight, lowerLeft, upperLeft}); 
    return rectangle; 
} 

// calculate intersection 
public static Coordinate getIntersectionFromRectangleCenterAndCoordinate(LinearRing rectangle, Coordinate someCoord){ 
    // get your rectangle center coordinate (A) 
    Coordinate rectangleCenter = rectangle.getCentroid().getCoordinate(); 
    // create line from center to someCoord (A - B) 
    LineString lineFromCenterToSomeCoord = new GeometryFactory().createLineString(new Coordinate[]{rectangleCenter, someCoord}); 
    // calculate intersection 
    Geometry intersectionGeom = rectangle.intersection(lineFromCenterToSomeCoord); 
    // in your case just one intersection point... 
    Coordinate intersectionCoordinate = intersectionGeom.getCoordinate(); 
    return intersectionCoordinate; 
} 
関連する問題