多次元空間の折れ線

  • 前の記事で、xy平面での単調増加な折れ線を扱った
  • 任意の次元での折れ線を考えてみる
  • この折れ線上を移動するときの位置のパラメタ表示について考えてみたい
  • n次元とする
  • 折れ線はこの空間上の点X_i=(x_{i,1},x_{i,2},...,x_{i,n})の並びS=(X_0,...,X_k)と、その隣接点を結んだ線分X_{j-1}-X_{j},j=1,2,...,kとからなる
  • この折れ線をX_0からX_kへと移動する点Pは、時間のパラメタtを用いて、速さv(t)で動くものとし、時刻0に出発して時刻Tに到着するものとすると\int_{0}^T v(t) dt = \sum_{j=1}^k |X_{j-1}-X_j|で表される
  • ここで、興味があるのは、時刻tにおける点Pの位置であり、言い換えるとPが点X_jのいずれかの上にあるのか、ある線分X_{j-1}-X_jの上にあるのかを明らかにすることであるとする
  • Pは点X_{j-1}上で静止しているか、線分上を(その線分上では)一定速度で移動するとすれば、駅の時刻表のように、各点の到着時刻と出発時刻を定めれば、その運動の様子は一意に決まる
  • やはり、前の記事と関連付けて考えよう
  • 前の記事では、折れ線のところどころの点を取り出して、出発点と取り出した点(をいくつか)と終着点を結んだ線を引いてやった
  • それを引くときのルールのせいで、それは「凸包」を作っていた
  • この関係を、各駅停車と快速電車との停止駅表示に擬することができる
  • では、今、ある駅(各駅停車しか停まらない駅も含む)を取り出したときに、それが、快速電車の停車駅なのか、そうでないなら、どの快速電車の停車駅に挟まれているのか、を知ることは、駅に順序がある限り簡単そうだ
  • どうしてこんな簡単なことをくどくどと書いているかというと、折れ線上の点の順序で考えずに、2次元の座標のそれぞれの値の大小比較から、この質問に答えようとして、無駄な時間を費やしてしまったから…
  • さて、そんな反省をしつつ、折れ線を順序のある点列と点間線分とみなして、折れ線上の任意の点がどこにあるかを調べることにしよう。前の記事では凸包線を引いたが、その凸包線の対応傾きを算出することにおうようしてある
t<-sort(c(x,y))
LRgrad.out<-LRgrad3(x,y,t)
plot(LRgrad.out$roc$X,LRgrad.out$roc$Y,type="l")
par(new=TRUE)
plot(LRgrad.out$chull$X,LRgrad.out$chull$Y,type="l",col=2)
for(i in 1:length(LRgrad.out$v)){
	if(LRgrad.out$gs[i]==0){
		abline(h=LRgrad.out$vXY$Y[i])
	}else if (LRgrad.out$gs[i]==Inf){
		abline(v=LRgrad.out$vXY$X[i])
	}else{
		abline(LRgrad.out$vXY$Y[i]-LRgrad.out$vXY$X[i]*LRgrad.out$gs[i],LRgrad.out$gs[i])
	}
	Sys.sleep(0.01)
}