Использование углов и задание точек
Построение границы дорожки
|
| ||||
Использование углов и задание точек |
| ||||
Есть еще пара вопросов, которые требуется рассмотреть. Во-первых, необходимо установить, каким образом строится дорожка под заданным пользователем углом. Из функции gp:getPointInput можно легко получить исходный угол наклона дорожки. Для построений нужно рассчитать два вектора, перпендикулярных этому углу.
Здесь пригодится функция Degrees->Radians. В следующем фрагменте кода выполняется расчет двух перпендикулярных векторов; при этом переменная PathAngle передается в качестве аргумента функции Degrees->Radians: (setq angp90 (+ PathAngle (Degrees->Radians 90)) angm90 (- PathAngle (Degrees->Radians 90))) Имеющиеся данные позволяют найти с помощью функции polar четыре угловые точки дорожки. (setq p1 (polar StartPt angm90 HalfWidth) p2 (polar p1 PathAngle PathLength) p3 (polar p2 angp90 Width) p4 (polar p3 (+ PathAngle (Degrees->Radians 180)) Функция polar возвращает 3М точку, расположенную под заданным углом и на заданном расстоянии от исходной точки. Например, точку p2 функция polar находит, откладывая от точки p1 расстояние, равное PathLength, вдоль вектора, повернутого на угол PathAngle против часовой стрелки относительно оси X.
|