Date:2024-03-14
How to create Minkowski Distance Circles with Processing.
本記事では、ミンコフスキー距離を使用し、形状 (円) をProcessingを用いて制作します。ミンコフスキー距離はユークリッド距離とマンハッタン距離を一般化したもので使い方のアイディアによって美しいグラフィックを作ることができます。

Index
- Sample Graphic of barbe_generative_diary
- ミンコフスキー距離とは?
- ミンコフスキー距離のさまざまな次数
- Processingにてミンコフスキー距離を使って円(図形)を作成する方法
- Recommended Book / barbe_generative_library
Sample Graphic of barbe_generative_diary
ミンコフスキー距離を使用した barbe_generative_diary のグラフィックサンプルです。
ミンコフスキー距離は、ドイツの数学者ヘルマン ミンコフスキーにちなんで名付けられたこの距離測定です。パターン認識、画像処理、クラスタリング分析など、さまざまな分野で多用途のツールとして機能します。 ミンコフスキー距離が何を意味するのか、そしてプログラム コードでミンコフスキー距離を使用して円を作成する方法を見てみましょう。
ミンコフスキー距離とは?
ミンコフスキー距離は、多次元空間内の 2 点間の距離を計算する一般化された計量です。 これは本質的に、正規ベクトル空間における 2 つのベクトル間の非類似性の尺度です。 n 次元空間内の 2 点 X と Y の間のミンコフスキー距離を計算する式は、次のとおりです。

- D(X,Y) は、点 X と Yの間のミンコフスキー距離を表します。
- xi と yi は i 番目の次元の 2 つの点に対応します。
- p はミンコフスキー距離の次数を定義するパラメーターです。p=1 の場合はマンハッタン距離に対応し、 p=2 の場合はユークリッド距離になります。
ミンコフスキー距離のさまざまな次数
- マンハッタン距離 (p=1): マンハッタン距離は、格子状のパスに沿った 2 点間の距離を計算します。 これは、デカルト座標の絶対差の合計として計算されます。
- ユークリッド距離 (p=2): おそらく最もよく知られた距離計であるユークリッド距離は、空間内の 2 点間の直線距離を表します。 これはピタゴラスの定理から導出され、2 つの点を結ぶ線分の長さを測定します。
- その他: ミンコフスキー距離は p=1 and p=2だけに制限されません。任意の実数 p≥1を使用することができます。また p の値が大きいほど、1 次元の大きな差に重みがかかりますが、値が小さいほど、重みがより均一に分散されます。
次の図は、さまざまな p 値を使用した単位円 (すべての点が中心から単位距離にある距離関数のレベル セット) を示しています。

Processingにてミンコフスキー距離を使って円(図形)を作成する方法
以下のコードは、Processingの都合上綺麗な図形を描くため、HALF_PI ごとに個別に作成されます。
//Minkowski distance|Circles
float radius = 200;
void setup() {
size(500, 500);
noFill();
}
void draw() {
background(255);
translate(width / 2, height / 2);
noStroke();
fill(0,100);
minkowskiCircles();
}
void minkowskiCircles() {
float[] pValues = {0.5, 1, 2, 3};
for (float p : pValues) {
beginShape();
for(int i=0; i<4; i++){
for (float angle = 0; angle < HALF_PI; angle += 0.01) {
float x = cos(angle + HALF_PI*i);
float y = sin(angle + HALF_PI*i);
float scale = pow(pow(abs(x), p) + pow(abs(y), p), 1/p);
vertex(radius * x / scale, radius * y / scale);
}
}
endShape(CLOSE);
}
}
結果

Recommended Book / barbe_generative_library

Grid systems in graphic design – Josef Müller-Brockmann
グリッドシステムとは。
グリッドシステムとは、連続した行と列に基づいてテキストやイメージを配置しデザインの整合性と視認性を高めるレイアウト手法です。元々は印刷レイアウトのために考えられたものですが、現在ではWebデザインなど、あらゆるデザイン設計において利用され、ProcessingやP5jsなど2Dでグラフィックを制作する場合にも、このグリッドシステムから学べる事は多い。
ーーーーー
► 『Grid systems in graphic design 』(Josef Müller-Brockmann)
1981年に刊行された完全日本語訳版。
初版/ 2019.11.9
ページ数/184ページ
出版社/ボーンデジタル
言語/日本語
BGD_SOUNDS (barbe_generative_diary SOUNDS)
BGD_SOUNDS では、Sound Visualization(音の視覚化)実験に使用する目的でストックされた、多くのフィールドレコーディング音源の共有と販売を始めています。ほぼすべての音源は、192kHz-32bit floatで録音され、ロイヤリティーフリーにて自由に使用できます。定期的にリリースされますので、音源が必要な方はフォローにて最新情報をチェックしてみてください。
