遊び tokidoki 仕事

数学と音楽と教育と遊び

| おしごと - きょういく - がくせい - ゼミ - イベント | すうがく - おんがく - 数理音楽 - DTM - かがく - scratch
| Art - photo - おきにー - Tips - ものもう - あれこれ | About - Top

Moire Amore!(1)―現象編

むか~しむかし,あるゼミ生がモアレを題材に卒論を書いたことがある.
日付を見るともう8年も前,2代目の作品だ.tokidoki.hatenablog.jp
で今年の卒論,10代目となるのだが,
錯視の数理としてちっとも数学に乗ってこないゼミを1人行ってきた.
もとはベンハムのコマを数理的なモデルを立てて
色が見える仕組みの解明を目指していたのだが,
科学実験の枠を超えて数理モデルを立てるには未だ至らず.
(まじめにやると心理物理学とか生理光学とかにはまっていくし.)www.ncsm.city.nagoya.jp
拉致があかないので,
あるときから平行してモアレ現象で何かできないか探し始めていた.
ああ,あの干渉縞のことね,それなりに数式は立てられるだろうけど,
高校数学の練習問題ぐらいなんじゃない?と思われるだろう.
だが,中には結構面白い現象があるんだってことを最近知った.
なんと格子縞は拡大レンズの役割をするのだ.
初めは身の回りの品でモアレが起こる例としての下の動画の中で,
六方格子状に穴が並んだ板を重ねて回転させると
六角格子が拡大される現象から,おや?となったことに始まる.
モアレテスト - YouTube

あれっ,ってことは拡大レンズになるのかもしれない.
他にそんな実験してないか探したところ,例えば以下の動画などどうだろう.


Moire Lens/モアレレンズ - YouTube
同じ文字が細かく並んだシートの上に,同一ピッチで穴を開けたシートを載せると
小さな文字が拡大されて浮き出てくるのだ.な~んと.

で,ぼや~っと運転しながら考えてたら意味が分かってきた.
要するにこれは「粗視化」の一種なんだ.
遠くから見るという操作は,図形の高周波成分を短周期で積分してしまうと理解できる.
でもその前に自分の手の中でも実験したくなり,早速作ってみたよBASICで.
↓はその実験動画.前半は格子を微小角回転させて文字を拡大,
後半は格子のピッチを文字のピッチより縮小させて文字を拡大している.


拡大縮小モアレ模様 - YouTube

そしてそのソース.

REM
REM [Moire de expansion]
REM Ver. 2015/12/01
REM 左ドラッグしながら上にマウスを動かすと格子ピッチが縮小される
REM ドラッグしないで上に動かすと格子が左右に微小に回転する
REM

SET WINDOW 0,1,0,1
SET TEXT font "",7
LET dt=.01

! 下地となる文字模様画像作成
INPUT  PROMPT "Character":c$
FOR x=0 TO 1 STEP dt
   FOR y=0 TO 1 STEP dt
      PLOT TEXT ,AT x,y:c$ ! 拡大したい文字
   NEXT y
NEXT x
! このBasicファイルと同じ場所に下地となる文字模様画像を保存
gsave "moire.png"

! 画面のピッチに合わせて変更のこと(BASIC画面801×801では 6 が丁度良い).
SET LINE width 6
pause
DO
   mouse poll mx,my,left,right
   SET DRAW mode hidden
   CLEAR
   gload "moire.png"
   IF left=1 THEN
      LET e=1+my/10
      LET sx=mx/100
      FOR x=0 TO e STEP dt*e
         PLOT LINES: x+sx,0; x+sx,1
      NEXT x
      FOR y=0 TO e STEP dt*e
         PLOT LINES: 0,y+sx; 1,y+sx
      NEXT y
   ELSE
      LET sy=my/100
      LET sx=SIN((mx-.5)*PI/10)
      FOR x=0 TO 1 STEP dt
         PLOT LINES: x+sy,0; x+sy+sx,1
      NEXT x
      FOR y=0 TO 1 STEP dt
         PLOT LINES: 0,y; 1,y-sx
      NEXT y
   END IF
   SET DRAW mode explicit
   WAIT DELAY .1
LOOP UNTIL right=1
END

さて,これをどうやって数式で理解するか.それは次回に.

f:id:okiraku894:20151202123949p:plain:w400