Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Найти угол между прямыми и отрисовать


Автор: Mach3 11.12.2013, 11:57
Добрый день. Пишу на Processing'е. Не знал где разместить. Но суть одна =)
user posted image
Код

for (int i = 0; i<= arrX.size()-2; i++) // arrX и arrY содержат координаты начала и конца всех прямых (x(i),y(i):x(i+1),y(i+1))
   {           
            v1 = new PVector((arrX.get(i+1)) - (arrX.get(i)) ,(arrY.get(i+1)) - (arrY.get(i))); //получаю 1 вектор 
            v2 = new PVector((arrX.get(i+2)) - (arrX.get(i+1)) ,(arrY.get(i+2)) - (arrY.get(i+1))); //второй вектор
            float a = PVector.angleBetween(v1, v2); //получаю угол между двумя векторами
           arc(arrX.get(i+1), arrY.get(i+1), 50, 50, a, radians(180)+a); // рисуем арку 
    }


Функция arc:
arc(a, b, c, d, start, stop, mode)
a    float: x-coordinate of the arc's ellipse
b    float: y-coordinate of the arc's ellipse
c    float: width of the arc's ellipse by default
d    float: height of the arc's ellipse by default
start    float: angle to start the arc, specified in radians
stop    float: angle to stop the arc, specified in radians

Проблема в том, что зная угол между векторами я не могу определить "start" - откуда рисовать арку.
Вобщем эксперементировал со start и stop ничего не выходит.
Чего-то явно не хватает =)) Может есть советы как это сделать.
Спасибо.

Автор: smalcom 11.12.2013, 13:58
вершина угла у вас есть, направление отрезков есть.
берёте отрезок, по нему выводите нормализованный вектор и этот вектор уже крутите чтобы получить дугу

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)