Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java在两条直线的交点上绘制直线_Java_Math - Fatal编程技术网

java在两条直线的交点上绘制直线

java在两条直线的交点上绘制直线,java,math,Java,Math,我有一个程序,我可以画两条线,当我选择了这些线的起点和终点时,它会计算出它们相交的点。我想画一条线,从交叉点开始,正好在这两条线的中间。 我这样计算两条线之间的角度: 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

我有一个程序,我可以画两条线,当我选择了这些线的起点和终点时,它会计算出它们相交的点。我想画一条线,从交叉点开始,正好在这两条线的中间。

我这样计算两条线之间的角度:

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);

您正在计算的角度是通过每条线的第一个点绘制的线所形成的角度。这似乎不相关

我不知道你对角度做了什么,但我认为你想要的第二点是:

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 

要找到由两条直线形成的角平分线,需要计算这些直线的单位方向向量

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 

你能给我们看一下你的方法的视觉输出吗?@Maia在两行上添加了输出哪一点是第一点?你想把电话线拨到哪里?也许可以添加另一种颜色。你能给我们看看你的方法的视觉输出吗?@Maia添加了输出哪一点是两行上的第一点?你想把电话线拨到哪里?也许可以加上另一种颜色。