Java 从固定点50px向鼠标位置绘制线
我试图画一条50像素长的线,从一个固定点到一个基于鼠标位置的点,但我在三角方面很糟糕。 我一整天都在做这件事,仍然不知道怎么做。 使用的四个变量是:Java 从固定点50px向鼠标位置绘制线,java,graphics,trigonometry,Java,Graphics,Trigonometry,我试图画一条50像素长的线,从一个固定点到一个基于鼠标位置的点,但我在三角方面很糟糕。 我一整天都在做这件事,仍然不知道怎么做。 使用的四个变量是: startX; //X position of fixed point startY; //Y position of fixed point mouseX; //X position of mouse mouseY; //Y position of mouse 提前感谢。假设您正在使用,您可以执行以下操作: double angle=Math.
startX; //X position of fixed point
startY; //Y position of fixed point
mouseX; //X position of mouse
mouseY; //Y position of mouse
提前感谢。假设您正在使用,您可以执行以下操作:
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));
假设您正在使用,您可以这样做:
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));
您需要在鼠标光标指向该点的方向上创建一个(长度为1的向量)。然后你把单位向量乘以50,就得到了这个方向上长度为50的向量
因此,首先获取从固定点到鼠标光标的向量:
float dirX = mouseX - startX;
float dirY = mouseY - startY;
然后,对该向量进行规格化(使其长度为1)
现在我们将归一化向量乘以50,得到了一个在我们想要的方向上长度为50的向量
float lineX = dirX_normalized * 50;
float lineY = dirY_normalized * 50;
现在我们可以划清界限了
g.drawLine(startX, startY, startX + lineX, startY + lineY);
您需要在鼠标光标指向该点的方向上创建一个(长度为1的向量)。然后你把单位向量乘以50,就得到了这个方向上长度为50的向量
因此,首先获取从固定点到鼠标光标的向量:
float dirX = mouseX - startX;
float dirY = mouseY - startY;
然后,对该向量进行规格化(使其长度为1)
现在我们将归一化向量乘以50,得到了一个在我们想要的方向上长度为50的向量
float lineX = dirX_normalized * 50;
float lineY = dirY_normalized * 50;
现在我们可以划清界限了
g.drawLine(startX, startY, startX + lineX, startY + lineY);
很好,也不需要三角。只是一个刻度。:-)很高兴你这么做。。。我正要用sin&cosNice输入答案,也不需要三角。只是一个刻度。:-)很高兴你这么做。。。我正要用sin&cost输入答案。这可能比大卫的答案慢。这可能比大卫的答案慢。