斜交座標

講座初回ですが、いきなり「斜交座標」なるものを取り入れてみます。「何それ?」「むずそうorz」と思うかもしれませんが、まったくそんなことはなく、むしろ斜交座標は図形的・直感的に理解できる上に「こんなことができるのか」という感動も伴うこと間違いなしです。数学となでしこ両者の「楽しさ」を伝えるために最良の題材です。

簡単に説明すれば、誰もが知っている「直交座標」を斜めにしたり引き伸ばしたりした座標が斜交座標です。「あみあみ」をびよーんと伸ばしているところを想像すると分かりやすいと思います。

斜交座標 on なでしこ

それではまずプログラムでの実装例を見ていきましょう。

斜交座標1.nako
線色は青色。線太さは1。# 描画命令の属性設定

X1とは数値。Y1とは数値。# 線命令の始点
X2とは数値。Y2とは数値。#     終点
Iとは整数。# カウンタ

Iを0から10まで繰り返す
 0 ,IをX1,Y1へ斜交座標変換。#1
 11,IをX2,Y2へ斜交座標変換。#1'
 X1,Y1からX2,Y2へ線。#2
 I, 0をX1,Y1へ斜交座標変換。
 I,11をX2,Y2へ斜交座標変換。
 X1,Y1からX2,Y2へ線。
 0.05秒待つ。# ウェイト

●斜交座標変換(A,Bを{参照渡し}X,{参照渡し}Yへ) #3
 X = 25*A + 15*B。#4
 Y =  5*A + 20*B。#4
 

斜交座標 on Math

図:直交座標をびよーんと斜めに引っ張れば斜交座標になる

これを実行してみれば、およそ斜交座標がどんなものなのか、なんとなく分かりませんか?xとyの直交座標を、びよーんと斜めに引っ張れば斜交座標になるわけです(図参照)。プログラムの後ろから解説することになりますが、この斜交座標変換(#3)はどのようなしくみになっているのかについて、数学的に解説をしていきたいと思います。

メインの変換式斜交座標変換の式#4を一まとめにして、ベクトルを使って書き直してみましょう(*1)

図:(X,Y)=(25A+15B,5A+20B)=A(25,5)+B(15,20) を列ベクトルで書き直した場合
 ( X , Y ) = ( 25A + 15B , 5A + 20B )
           = A ( 25 , 5 ) + B ( 15 , 20 )  …… ★

このように書き表せますね。この式★の図形的意味を考えるために、教科書にも載っているような次の問題を見てみましょう。

原点Oと点A,Bがあり、O,A,Bは一直線上にないとする。このとき、次式を満たすような点Pの存在する範囲を述べよ。ただし、任意点Xに対しOXベクトルを  で表す。(*2)

=s+t ……… [1](s+t=1 ……… [2])

大学入試の2次で数学の図形分野が必要な人ならば、絶対に解けなければならないと言っても過言で無いほど、この問題には数学的に重要な性質が詰まっています。問題の答えを書いてしまうと、「点Pは直線AB上に存在する」ですね。数学的に説明するとしたら[2]式を用いて[1]式のsを消去して式変形すれば直線ABのパラメタ表示に……でもちょっと待ってください、ここではそれぞれの式の意味するもっと本質的な意味を考えてみましょう(そうすれば★式の理解にもなる!)。

先に[2]式を考えると、st座標(ここでは普通の直交座標)で点(0,1)と点(1,0)を通る直線を表していますね。では[1]式はいったいどういう意味、役割なのか?[1]式を(厳密な表現とは言えないが)言葉で表すと、Pの位置は、Oから、sだけAの方向に、tだけBの方向に進んだところです。O,A,Bは一直線上にない定点ですから、Pの位置は2つの変数s,tによって一意に定まっています。このような点の定め方、どこか見たことがある気がしませんか?――普通の直交座標で点(x,y)はOからxだけx軸の方向に………。もう分かりましたね!つまり、[1]式がずばり斜交座標そのものを表していて、[2]式がその座標における図形(直線AB)を表しているのです!

思い出してください。斜交座標とは直交座標をびよーんとゆがめたものでした。st(直交)座標上に直線[2]が存在している状態から、s軸はの方向に、t軸はの方向に伸ばして斜交座標にすれば(変換すれば)、直線ABになるわけです。

★式の位置ベクトル(X,Y)は、「変数×定ベクトルの和」で表されています(このような形の式を数学では一次結合と呼びます)。=(X,Y)、=(25,5)、=(15,20) と置いてみれば、★式と[1]式がまったく同じ形式(一次結合)で表されていることが分かりますね。

プログラムの解説

#1
斜交座標における点(0,I)の位置を、なでしこの(直交)座標の点(X1,Y1)で表す。
#1'
同上。(11,I)→(X2,Y2)
#2
#1と#1'の二点を結ぶ線分を描画する。斜交座標における線分 Y=I (0≦X≦11) であり、これが[2]式に該当する。
#2以降
斜交座標における 線分 X=I (0≦Y≦11) を描画する。内容は同上。
#3
斜交座標における点(A,B)の位置を、なでしこの(直交)座標の点(X,Y)で表す(変換する)。参照渡しされた引数X,Yに変換の結果が入り、変数X,Yの内容は書き換えられる。
#4
斜交座標変換の式。上記参照。

まとめ

  • 斜交座標は直交座標の座標軸をびよーんと伸縮・歪曲したもの。
  • 斜交座標は簡単な式(一次結合)で表される。
  • 斜交座標の点の位置は、簡単に直交座標で表すことができる。

この次は便利な行列の一次変換を扱います。実はここで扱った斜交座標変換と行列の一次変換は本質的に全く同じもの(*3)です。今回の講座の内容を別の視点から再確認していきましょう。

#3で与えられた変換をもちいた斜交座標上で、「円 (x-5)^2+(y-4)^2=9」を図示せよ。

注釈

*1
ベクトルの行・列の違いなどの厳密な話は次回扱う予定。
*2
高校数学では通例文字の上に矢印(→)を付してベクトル変数を表すが、(大学の)数学界ではBold体(太字のこと)にしてベクトル変数を表す。さらに、面倒になってきて(かどうかは知らないが)、単に普通の細さの文字でもベクトル変数として扱ったりもする。余談だが、もし零ベクトルの上の矢印を忘れて単に「」と解答に書いた場合、予備校の講師は減点するだろうが、大学の教授は減点しないだろうと思う。
*3
本質的に全くもって完全に全てが同じかと言うとそうでもないんだけど、実数体、有限次元なのでまぁ同じということで(ぇ