Рисование линии от фиксированной точки 50px к позиции мыши Java - PullRequest
0 голосов
/ 09 апреля 2011

Я пытаюсь нарисовать линию длиной 50px от фиксированной точки до точки, основанной на положении мыши, но я ужасен в тригонометрии. Я застрял на этом весь день и до сих пор не знаю, как это сделать. четыре переменные используются:

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

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 09 апреля 2011

Вы хотите сделать Единичный вектор (вектор длиной 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 в нужном направлении.1012 *

Теперь мы можем нарисовать нашу линию

g.drawLine(startX, startY, startX + lineX, startY + lineY);
1 голос
/ 09 апреля 2011

Если вы используете AWT Graphics класс , вы можете сделать это:

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