簡體   English   中英

Java在兩條線的交點上畫線

[英]java draw line on intersection point of two lines

我有一個程序,我可以畫兩條線,當我為這些線選擇了起點和終點時,它將計算它們相交的點。 我想從相交點開始繪制一條線,正好在這兩條線的中間。

例

我像這樣計算兩條線之間的角度:

double angle(Line pL1, Line pL2){
    double angle = Math.toDegrees(Math.atan2(pL2.p1.y - pL1.p1.y, pL2.p1.x - pL1.p1.x));
    if(angle < 0){
        angle += 360;
    }
    return angle;
}

然后像這樣生成新行:

    double newAngle = Math.toRadians(drawAngle);
    System.out.println(newAngle);
    double x = pI.x + 80 * Math.sin(newAngle);
    double y = pI.y + 80 * Math.cos(newAngle);
    Point2D.Double endPoint = new Point2D.Double(x,y);
    Line l3 = new Line(pI,endPoint);

其中pI是交點。 但是,這條線總是以錯誤的角度面對結尾,我該如何重寫此代碼,以便該線准確地在其他兩條線之間繪制,就像上面的示例圖片一樣?

編輯:

輸出: 例子2

我不知道您在用角度做什么,但是我想您要說的第二點是:

double y = 0.5*(pL2.p1.y + pL1.p1.y);
double x = 0.5*(pL2.p1.x + pL1.p1.x);

您正在計算的角度是一條線穿過每條線的第一個點繪制的角度。 這似乎無關緊要。

要查找由兩條線形成的角平分線,您需要計算這些線的單位方向向量。

len1 = Sqrt((pL1.p1.y - pL1.p2.y)^2 + (pL1.p1.x - pL1.p2.x)^2)
dx1 = (pL1.p2.x - pL1.p1.x) / len1
dy1 = (pL1.p2.y - pL1.p1.y) / len1
similar for the second line

bx = (dx1 + dx2) / 2
by = (dy1 + dy2) / 2

等分線的第二點是

point.x = pI.x + 100.0 * bx 
point.y = pI.y + 100.0 * by 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM