まだ、問題が 2 つ残っています。第 1 に、ユーザが指定した任意の角度で歩道を描く方法を考える必要があります。gp:getPointInput 関数から、歩道の角度を簡単に取得することができます。歩道を描くには、この角度に垂直な 2 つのベクトルが必要です。
ここで、Degrees->Radians 関数が役に立ちます。次のコードは、2 つの垂直ベクトルを得る方法を示しています。変数 PathAngle は、 Degrees‑>Radians 関数に渡される引数として使用されています。
(setq angp90 (+ PathAngle (Degrees->Radians 90)) angm90 (- PathAngle (Degrees->Radians 90)))
これによって取得するデータと polar 関数を使用して、歩道の 4 つのコーナー点を計算することができます。
(setq p1 (polar StartPt angm90 HalfWidth) p2 (polar p1 PathAngle PathLength) p3 (polar p2 angp90 Width) p4 (polar p3 (+ PathAngle (Degrees->Radians 180))
polar 関数は、ある点から指定した角度と距離だけ離れた 3D 点を返します。たとえば polar 関数は、X 軸から反時計回りに PathAngle の角度だけ回転した方向を持つベクトルに沿って PathLength の距離だけ離れた位置に p1 を投影することによって p2 を位置付けます。