この記事では、リサジュー図形の基本概念から応用例まで、Processingによるプログラムコーディングについてです。

リサジューカーブを利用したサンプルアイデア

Index

  1. リサジュー図形とは?
  2. リサジュー図形の生成方法
    Processingによるコードと実演
  3. リサジュー図形の応用例
    3.1. オシロスコープ音楽
    3.2. 振動解析
    3.3. アートとデザイン
  4. リサジュー図形の魅力と可能性
  5. まとめ

1. リサジュー図形とは?

リサジュー図形は、2つの異なる周波数で振動する単純な正弦波を直交する軸(X軸とY軸)に当てはめたときに現れるパターンのことです。フランスの物理学者ジュール・アントワーヌ・リサジュー(Jules Antoine Lissajous)が発見したことから、この名前が付けられました。

リサジュー図形の形状は、次の要素によって決まります。

  • 周波数の比:X軸とY軸で使用する波の周波数の比が異なると、描かれる形が変化します。
  • 位相差:2つの波の間の位相差が、図形のシンメトリーや複雑さに影響します。

数式で表すと、X軸の波形が x(t) = A * sin(a * t)、Y軸の波形 y(t) = B * sin(b * t + δ) という形になり、A と B は振幅、a と b は周波数、δ は位相差を意味します。

2. リサジュー図形の生成方法

リサジュー図形を描くためには、オシロスコープやプログラムを使用するのが一般的です。オシロスコープでは、X軸とY軸に異なる周波数の正弦波を入力することで画面上にリサジュー図形が現れます。一方、コンピュータプログラムでは、たとえば「Processing」や「Python」を使ってこれらの波形を数式でシミュレーションすることができます。

簡単なステップでリサジュー図形を作成する方法は次の通りです。

  1. 波の周波数を設定:X軸とY軸に異なる周波数を設定します。
  2. 位相差を調整:シンプルな楕円から複雑なパターンまで、位相差を調整して形状を変化させます。
  3. 図形を観察:オシロスコープやプログラム上で、リサジュー図形の美しさを楽しみます。

Processingによるコードと実演


float phase = 0;
int pointCount = 100;
float angle;

int freqX = 3;
//float modFreqX = 1;
int freqY = 2;
//float modFreqY = 1;

float phaX = 0;
float phaY = 45;

float x,y; 

float factorX, factorY;
int margin = 200;

void setup(){
  size(800,800, P2D);
  background(0);
  windowMove(100,0);
  smooth();

  factorX = width/2-margin;
  factorY = height/2-margin;

}

void draw(){
  background(0);
  //fill(0,50);  
  //noStroke();
  //rect(0,0,width,height);
  
  translate(width/2, height/2);

  noFill();
  stroke(255);
  strokeWeight(1);
  
  beginShape();
  for(int i=0; i<=pointCount; i++){
    angle = map(i, 0,pointCount, 0,TWO_PI);
    
    x = sin(freqX * angle + radians(phaX));
    //float carrierX = sin(angle * modFreqX);
    //x = x*carrierX;
    
    y = sin(freqY * angle + radians(phaY)+frameCount*0.01);
    //float carrierY = cos(angle * modFreqY);
    //y = y*carrierY;
    
    x = x * factorX;
    y = y * factorY;
    
    vertex(x, y);
    
  }
  endShape();
}

解説

X軸とY軸それぞれの周波数(frequency)としてfreqXfreqYの数値を変えると図形が変化します。また、phaXphaYにてそれぞれの周波数の位相をシフトすることができます。上記サンプルではY軸の位相をframeCountにて徐々に増やしアニメーションとしています。

先ほどの数式とプログラムへの変化は下記になります。

X軸の波形が x(t) = A * sin(a * t)
x = sin(freqX * angle + radians(phaX));

Y軸の波形 y(t) = B * sin(b * t + δ)
y = sin(freqY * angle + radians(phaY);

それぞれの振幅は最後にfactorX, factorYにて掛け合わされています。

3. リサジュー図形の応用例

リサジュー図形は、科学や工学の分野だけでなく、芸術や音楽にも幅広く応用されています。以下にその一部を紹介します。

3.1. オシロスコープ音楽

音楽の波形を視覚化するためにリサジュー図形が使われることがあります。特にシンセサイザーやデジタル楽器を使った音楽では、周波数や位相を調整することで音楽と視覚的な表現がリンクします。

3.2. 振動解析

リサジュー図形は、機械の振動を分析する際にも利用されます。異なる振動モードを観察し、機械の不具合を発見するために、2つの振動を可視化するのに役立ちます。

3.3. アートとデザイン

リサジュー図形はその幾何学的な美しさから、アートやデザインの分野でも人気があります。特に、デジタルアートではリサジュー図形を使った作品が多く見られ、動きのあるグラフィックスとして表現されています。


float phase = 0;
int pointCount = 100;
float angle;

int freqX = 1;
//float modFreqX = 1;
int freqY = 1;
//float modFreqY = 1;

float phaX = 0;
float phaY = 0;

float x,y; 
float factorX, factorY;
int margin = 100;

void setup(){
  size(800,800, P2D);
  background(0);
  windowMove(100,0);
  smooth();

  factorX = width/32;
  factorY = height/32;
}

void draw(){
  background(0);
  //fill(0,50);  
  //noStroke();
  //rect(0,0,width,height);
  
  noFill();
  stroke(255);
  strokeWeight(1);
  for(int j=0; j<7; j++){
    for(int k=0; k<7; k++){
      beginShape();
      for(int i=0; i<=pointCount; i++){
        angle = map(i, 0,pointCount, 0,TWO_PI);
        
        x = sin((freqX+j) * angle + radians(phaX));
        //float carrierX = sin(angle * modFreqX);
        //x = x*carrierX;
        
        y = sin((freqY+k) * angle + radians(phaY+k*15)+frameCount*0.01);
        //float carrierY = cos(angle * modFreqY);
        //y = y*carrierY;
        
        x = x * factorX+margin*k+width/8;
        y = y * factorY+margin*j+height/8;
        
        vertex(x, y); 
        
      }
      endShape();
    }
  }
}

4. リサジュー図形の魅力と可能性

リサジュー図形の最大の魅力は、数学的なシンプルさから生まれる複雑で美しい形状です。異なる周波数や位相を組み合わせることで、無限のバリエーションが生まれ、それぞれがユニークなデザインとなります。

また、音波や振動の可視化に加え、プログラミングを通じて生成したリサジュー図形は、インタラクティブなアートやインスタレーションにも活用可能です。これにより、科学と芸術の交差点で新しい創造が生まれます。

まとめ

リサジュー図形は、科学的なバックグラウンドを持ちながら、芸術的な美しさをも併せ持つ特別な存在です。周波数と位相の組み合わせにより、シンプルな正弦波から複雑な幾何学模様まで描き出すその性質は、物理の理解を深めるだけでなく、創造的な表現を広げる手段にもなります。

リサジュー図形をまだ試したことがない方は、ぜひオシロスコープやプログラミングを通じて、この不思議な世界に触れてみてください。

おすすめのツールとリソース

  • Processing:ビジュアルプログラミングの入門に最適なオープンソースソフトウェア。リサジュー図形も簡単に描けます。
  • Python + Matplotlib:プログラミングの経験がある方には、Pythonでのリサジュー図形生成がおすすめです。

Recommended Book for Digital arts

book-generative_design

Generative Design / Processingで切り拓く、デザインの新たな地平
-Harmut Bohnacker, Benedikt Groß, Julia Laub

2012年に出版されたGenerative Designの日本語版、プログラミングによる視覚表現の解説本。Generative Designのオリジナルライブラリを利用することで、ビギナーにも優しいプログラムコードと解説でジェネラティブデザインが楽しめます。たくさんの美しい作品例と解説により、インスピレーションやリソースとして役立つだけでなく、プログラマーでない人にとっても新しいデザイン体験を与えてくれます。

ーーーーー
► 『Generative Design / Processingで切り拓く、デザインの新たな地平』(Harmut Bohnacker, Benedikt Groß, Julia Laub)
初版/ 2018.1.24
ページ数/495ページ
出版社/ビー・エヌ・エヌ新社
言語/日本語
ーーーーー

BGD_SOUNDS on bandcamp

BGD_SOUNDSでは、bandcamp上にて、安価で利用できる膨大な著作権フリーのサウンドライブラリーを目指して日々様々な音源ライブラリーを増やしています。音源のほとんどは、192kHzの32bitの高音質にて録音。音楽制作や映像制作など用途に合わせて利用可能です。また、Sound visualization Penplot artも定期的に販売しています。

BGD_CLUB(月額サブスクリプション)も低価格から始めており、すべてのライブラリーにアクセスし自由にダウンロードすることも可能です。

Link / BGD_SOUNDS on bandcamp