技術ブログ

ロゴを数式で作った話 — 3 分の 1 オクターブの梯子と、倍音で描く曲線

designdspacoustics

BPYG のロゴは、スピーカー設計で使う 1 : 1.26 : 1.59 の比率と、輪郭を倍音の和で描き直す規則から作りました。何を測り、どの式で決めたかを書きます。


BPYG は音響と信号処理の会社です。会社のロゴを作るとき、書体を選んで並べるのではなく、自分たちの仕事と同じ方法で作ることにしました。測って、式にして、作る。この記事は、その式の話です。

BPYG のロゴ。青い炎とワードマーク

寸法は 3 分の 1 オクターブの梯子で決める

音響の世界には「3 分の 1 オクターブ」という刻みがあります。オクターブ(周波数 2 倍)を 3 等分した比率で、周波数分析のバンド幅や、スピーカー筐体の推奨比 1 : 1.26 : 1.59 に出てきます。

r=21/31.26,r21.59,r3=2r = 2^{1/3} \approx 1.26,\qquad r^2 \approx 1.59,\qquad r^3 = 2

この等比数列を「梯子」と呼び、ロゴの中で決めなければならない比率をここから選ぶことにしました。3 段上がると必ず 2 倍になるので、どの寸法も「何段上か」で説明できます。

使った場所梯子での位置
縦線の太さ : 字高1 : 6.358 段(2 オクターブ + 2 段)
曲線を描き直す波長線幅 × 1.592 段上
炎の 3 層の大きさ1 : 1/1.26 : 1/21 段下、1 オクターブ下
炎と文字の間線幅 × 1.592 段上

曲線はスーパー楕円から始める

B と P のふくらみは、スーパー楕円(ラメ曲線)で作っています。

xanx+ybny=1\left|\frac{x}{a}\right|^{n_x} + \left|\frac{y}{b}\right|^{n_y} = 1

n=2n = 2 で楕円、nn を上げるほど角丸長方形に近づきます。この nn ひとつで書体の性格が決まるので、探索の出発点に向いています。ただし、これをそのままベジェにすると、直線区間の端や象限の境目で曲率が不連続になり、大きく印刷したときに「板を貼った」ように見えました。

輪郭を倍音の和で描き直す

そこで、閉じた輪郭を弧長 t[0,1)t \in [0, 1) で媒介変数化し、z(t)=x(t)+iy(t)z(t) = x(t) + i\,y(t) をフーリエ級数にしました。いわゆる楕円フーリエ記述子です。

ck=1Mm=0M1zme2πikm/M,z(t)=k=KKσkcke2πiktc_k = \frac{1}{M}\sum_{m=0}^{M-1} z_m\, e^{-2\pi i k m / M},\qquad z(t) = \sum_{k=-K}^{K} \sigma_k\, c_k\, e^{2\pi i k t}

上位 KK 次までで打ち切ると、細かい起伏が消えて曲率が連続な曲線になります。打ち切りの縁で波打つのを防ぐため、係数に Lanczos の窓 σk=sinc ⁣(k/(K+1))\sigma_k = \operatorname{sinc}\!\left(k / (K+1)\right) を掛けています。

ここで肝心なのは、KK を決めないことです。代わりに次の規則を置きました。

ペン(線幅)より細かい起伏は存在しない。

輪郭に沿った波長が λ=w×1.59\lambda = w \times 1.59ww は線幅)より短い成分を捨てる、と決めると、K=L/λK = \lfloor L / \lambda \rfloorLL は周長)が輪郭ごとに自動で決まります。大きな外周は細かく、小さなカウンターは粗くなり、全部の文字に同じ規則がかかります。

G は参考書体の 64 倍音から

G だけは、パラメータでどう作っても不自然でした。右下の折れと終端の切り口が「貼った」ように見えるのです。最終的に、参考にしたサンセリフ書体の G の輪郭を画像から取り、64 倍音の係数で持つことにしました。

左: パラメータで作った G。右: 64 倍音の係数から描いた G

ただし倍音の和では角が丸まります。G には横棒と縦棒が作る角が 8 か所あるので、両側の辺に直線を当てはめ、その交点を角の位置とし、直線区間の点を辺に射影して角で折りました。曲線は倍音、直線は直線、角は角、という分担です。

炎も同じ道具で

シンボルの青い炎は、極座標の 1 本の式です。

r(θ)=1+hte(θθtwt)2+hse(θθsws)2+k=47fkcos(kθ+ϕk)r(\theta) = 1 + h_t\, e^{-\left(\frac{\theta-\theta_t}{w_t}\right)^2} + h_s\, e^{-\left(\frac{\theta-\theta_s}{w_s}\right)^2} + \sum_{k=4}^{7}\frac{f}{k}\cos(k\theta + \phi_k)

円に、上の先端と右の小さな山を釣鐘で足し、上へ行くほど左へ流します。最後の項は揺らぎで、位相 ϕk\phi_k は G の倍音の係数の位相をそのまま使っています。この輪郭を 16 倍音の和で描き直し、3 層を 1:1/1.26:1/21 : 1/1.26 : 1/2 の大きさで重ねました。

炎の 3 層に左→右のグラデーションをかけた比較

色は炎から取った 5 段の青(深い藍 → 藍 → 水 → 芯 → 白)で、文字の左端が炎の外炎と同じ濃さになるようにしています。

最後は目で決めた

数式は出発点で、正解ではありません。倍音の数を減らして「手描きの揺らぎ」を出す実験や、先端を尖らせる 4 つの方式を試しましたが、どれも採らず、最後は Affinity で目で整えた版を最終としました。それでも、どの寸法がどの段にあり、どの曲線がどの規則で描かれたかは全部書き残してあります。説明できる形であることが、私たちにとっては一番大事でした。

作り方の詳細(数式の正本と生成ツール)は社内の repo にあり、今後この技術ブログで少しずつ書いていきます。


← 技術ブログの一覧へ