Как нарисовать стрелку - Pascal ABC
Формулировка задачи:
Здравствуйте. У меня имеются две точки с координатами, заранее они неизвестны, т.к. координаты вносятся по нажатию мыши. Задача состоит в том, что необходимо нарисовать стрелку с "галочкой" от одних координат до других. Планировал использовать процедуры Line и Pie, т.к. по входным данным они вполне подходят, однако для построения непосредственно стрелки необходимы вычисления. С ними-то у меня и возникла проблема. Заранее благодарю за ответ.
Решение задачи: «Как нарисовать стрелку»
textual
Листинг программы
u:=ugol(x1,y1,x2,y2); x3:=x2-round(20*cos(u+pi/10)); y3:=y2+round(20*sin(u+pi/10)); line(x2,y2,x3,y3); x4:=x2-round(20*cos(u-pi/10)); y4:=y2+round(20*sin(u-pi/10)); line(x2,y2,x4,y4);
Объяснение кода листинга программы
ugol(x1,y1,x2,y2)
- функция, которая вычисляет угол между двумя точками (x1,y1) и (x2,y2) и возвращает его значениеx3:=x2-round(20*cos(u+pi/10))
- вычисление координаты x для первой точки стрелки, где u - значение угла, pi/10 - добавление к углу для смещения начала координат, 20 - длина стрелки, cos - функция, возвращающая косинус угла, round - функция, округляющая число до ближайшего целого значенияy3:=y2+round(20*sin(u+pi/10))
- вычисление координаты y для первой точки стрелки, где u - значение угла, pi/10 - добавление к углу для смещения начала координат, 20 - длина стрелки, sin - функция, возвращающая синус угла, round - функция, округляющая число до ближайшего целого значенияline(x2,y2,x3,y3)
- функция, которая рисует прямую линию между точками (x2,y2) и (x3,y3)x4:=x2-round(20*cos(u-pi/10))
- вычисление координаты x для второй точки стрелки, где u - значение угла, pi/10 - отнимание от угла для смещения начала координат, 20 - длина стрелки, cos - функция, возвращающая косинус угла, round - функция, округляющая число до ближайшего целого значенияy4:=y2+round(20*sin(u-pi/10))
- вычисление координаты y для второй точки стрелки, где u - значение угла, pi/10 - отнимание от угла для смещения начала координат, 20 - длина стрелки, sin - функция, возвращающая синус угла, round - функция, округляющая число до ближайшего целого значенияline(x2,y2,x4,y4)
- функция, которая рисует прямую линию между точками (x2,y2) и (x4,y4)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д