うしブログ

うしブログ

趣味で運営する、GeoGebraの専門ブログ。

(作業メモ)StartPoint要検証(2行の場合;テキスト変更時未定義問題)

(要修復)ToggleButton・RollPolygonWithoutSlipping・貯金時計・直感力トレーニング

GeoGebraにおける「垂線の足」の作り方11パターン

課題

点Pから線分f(延長線を含む)に下ろした垂線の足を、P,fのみに依存するオブジェクトとして作成し、その定義式を示せ。

f:id:usiblog:20191109224447g:plain

解説

目的の定義式は、何パターンも作ることができます。まず、fを延長した直線の作り方だけでも、以下のように、大きく分類して5パターンあります。

fを延長した直線の作り方

① Line[<点>, <平行な直線>]を利用

Line[Point[f],f]

*1

② Line[<点>, <方向ベクトル>]を利用

Line[Point[f], Vector[UnitVector[f]]]

*2

③ Line[<点>, <点>]を利用

Line[Point[f,0],Point[f,1]]

Line[Point[f,0],Center[f]]

Line[Center[f],Point[f,1]]

④ 2点を通る直線式を利用

y = ( ( y(Point[f,1]) - y(Point[f,0]) ) / ( x(Point[f,1]) - x(Point[f,0]) ) )*( x - x(Point[f,0]) ) + y(Point[f,0])

⑤ Slopeコマンドを利用

y = Slope[f]*( x - x(Point[f]) ) + y( Point[f] )

*3

Line[Point[f], Point[f] + (1, Slope[f])]

 *4

 

以下では、上記のいずれかの方法で作った、fを延長した直線を、「FLine」と表記することにします。実際に作成する際には、「FLine」の部分を、上記いずれかの数式に置き換えたものを、入力バーに入れてください。

垂線の足(目的のオブジェクト)の作り方

① ClosestPointコマンドを利用

ClosestPoint[FLine, P]

② Intersectコマンドを利用

Intersect[FLine, PerpendicularLine[P, f]]

*5

③ ベクトルの内積を利用

Point[f, 0] + (Vector[Point[f, 0], Point[f, 1]]*Vector[Point[f, 0], P]/f) * UnitVector[ Vector[Point[f, 0], Point[f, 1]] ]

 

以上のように、垂線の足は、FLineを用いた方法が2パターン、用いない方法が1パターン思いつきました。FLineの作り方は、5パターン紹介しましたので、本記事で紹介したパターンは、全部で11パターンです(5*2+1=11)。

*1:Point[f]は、Center[f]でも可。また、Point[f,0]、Point[f,1]など、任意のパス・パラメータを用いたf上の点でも可。

*2:注1に同じ。

*3:注1に同じ。

*4:注1に同じ。

*5:PerpendicularLine[P, f]は、Line[P, Vector[PerpendicularVector[f]]]でも可。また、Line[P,P+(1,-1/Slope[f])]でも可。