从固定点50px到鼠标位置Java的绘制线

时间:2011-04-09 03:53:47

标签: java graphics trigonometry

我试图绘制一条长度为50px的线,从固定点到基于鼠标位置的点,但我在三角测量中很糟糕。 我整天都被困在这里,仍然不知道该怎么做。 使用的四个变量是:

startX; //X position of fixed point
startY; //Y position of fixed point
mouseX; //X position of mouse
mouseY; //Y position of mouse

提前致谢。

2 个答案:

答案 0 :(得分:4)

您需要在鼠标光标方向上创建一个Unit Vector(长度为1的向量)。然后你将单位向量乘以50,你就得到了一个长度为50的向量。

所以你首先得到从固定点到鼠标光标的矢量:

float dirX = mouseX - startX;
float dirY = mouseY - startY;

然后你规范化这个向量(使它的长度为1)

float dirLen = sqrt(dirX * dirX + dirY * dirY); // The length of dir
dirX = dirX / dirLen;
dirY = dirY / dirLen;

现在我们将标准化向量乘以50,我们在我们想要的方向上得到一个长度为50的向量。

float lineX = dirX_normalized * 50;
float lineY = dirY_normalized * 50;

现在我们可以画线

g.drawLine(startX, startY, startX + lineX, startY + lineY);

答案 1 :(得分:1)

假设你正在使用AWT Graphics class,你可以这样做:

double angle=Math.atan2(mouseY-startY, mouseX-startX);
g.setColor(Color.BLACK);
g.drawLine(startX, startY,
    Math.floor(startX+Math.cos(angle)*50),
    Math.floor(startY+Math.sin(angle)*50));