[英]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
是交點。 但是,這條線總是以錯誤的角度面對結尾,我該如何重寫此代碼,以便該線准確地在其他兩條線之間繪制,就像上面的示例圖片一樣?
編輯:
我不知道您在用角度做什么,但是我想您要說的第二點是:
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.