2013-09-27 3 views
1

У меня есть треугольник, как показано на рисунке с A (109,239), B (182,234) и C (140,157).Увеличение длины строки в программировании

Я использую программирование xlib, чтобы получить это.

В случае щелчка мыши в точке внутри треугольника, я нахожу ближайшую вершину из этой точки, а затем я хочу протянуть линию за пределами треугольника для конечно большой длины.

enter image description here

Может ли один дать представление о том, как я могу это сделать. Я думаю, что нам нужно добавить некоторое значение ex a, b в B (x + a, y + b), но я не уверен, как вычислить значение a, b?

enter image description here

ответ

0

Если вы знаете, 2 точки p0 и p1, вы можете вычислить у для любых х:

y = (x - x0) * (y1 - y0)/(x1 - x0) + y0 

Так что в вашем случае этого 2 пунктом будет мышь пункт мыши и точка вершины.

Редактировать

Можно выбрать х, который находится на противоположной стороне мыши.

x = vertexX + (vertexX - mouseX); 
+0

Но здесь у меня нет значений x и y для замены. Более того, если я принимаю значение x и пытаюсь выяснить значение y, я не уверен, в каком направлении будет рисоваться линия. Предположим, что я выбираю точку около вершины C, я должен уметь растягивать линию в любом направлении. –

+0

Отредактировано изображение с новым выбором точки. –

+0

@Rdvsm Вам нужно выбрать какой-то х, который вы хотите. Используйте некоторую точку из выбранной вершины, которая находится в противоположном направлении щелчка мыши. – user694733