Статья Автор: Лебедев Дмитрий Алексеевич

Рисуем элементы геометрии

Пусть есть есть две точки \(A = (A_x,A_y), B=(B_x,B_y)\)
На отрезке \(\overline {AB}\) хотим найти точку \(С\) такую, что отношение длин  \(\overline {AC} :\overline{CB} = m : n\) 
Для решения этой задачи достаточно набор \([A,B]\) "средневзвесить" набором \([n, m]\)
то есть определить
  • \(C_x = \frac{A_x\cdot n+B_x\cdot m}{n+m}\)
  • \(C_y = \frac{A_y\cdot n+B_y\cdot m}{n+m}\) 
ниже приведен код требуемой подпрограммы с примером вызова

 

Используем полученный результат, чтобы нарисовать пунктир из A в B
Выбираем число разбиений (четное значение) и рисуем чередованием
Ниже представлен код программы

 

Задание 1.

Напишите/исправьте программу так, чтобы она рисовала линию чередованием цветов


Полученный результат можно использовать и для других целей.
Например, можно продлить отрезок \(\overline {AB}\) за точку B до точки C так, чтобы длина  \(\overline {BC} \) была в k раз больше длины \(\overline {AB}\)
Для этого надо "разбивать" отрезок с отрицательным соотношением \([ k+1,-k]\)

 

Задание 2.

Напишите/исправьте программу так, чтобы она рисовала линию, проходящую через \(\overline {AB}\) в обе стороны 

 

Попробуем построить на отрезке \(\overline {AB}\)
Для этого надо повернуть вектор/отрезок \(\overline {AB}\) на 90 градусов
Вектор \(\overline {AB}\) имеет координаты \((B_x - A_x, B_y - A_y)\) 
вектор \(\overrightarrow {BC} \perp \overrightarrow {AB}\) будет иметь координаты \((B_y - A_y, A_x -B _x)\)
и его надо "приложить" к точкам \(B, A\) 
Получим \(C = (B_x + B_y - A_y, B_y + A_x -B _x), D = (A_x + B_y - A_y, A_y + A_x -B _x)\)
Осталось последовательно соединить точки \(A, B, C, D\)

 
Печать