タグ

2016年10月11日のブックマーク (2件)

  • 基本波形の生成

    オーディオやマルチメディア関連のプログラムを書いていると、手早くノコギリ波や矩形波を生成したいことがある。 そこで、簡単にいろいろな波形を生成する方法をまとめる。 1. ノコギリ波1サンプルごとに少しずつ値を足していくと、直線的に増加していく波形ができる。値が 1.0 を超えた瞬間に 0.0 へ戻すことで、ノコギリ状の周期波形が生成できる。これは、値の小数点以下のみを取り出すことで実装できる。 実装してみる。 以下のコードでは、オーディオ信号として扱いやすいよう出力値の範囲を 0〜1 から -1〜1 へ変換している。 double sawtooth(double 周波数, double サンプルレート) { static double phase = 0.0; // 初期値 phase += 周波数 / サンプルレート; phase -= floor(phase); // 整数部分を引き算

    基本波形の生成
  • 中学生でもわかるベジェ曲線

    ベジェ曲線をレンダリングしていたら面白くて丁寧に描いてしまった。せっかくなのでこれを使って誰にでもわかるように(たぶん中学生でも分かるように)ベジェ曲線というものが何かを説明してみたいと思う。 ベジェ曲線というのはなめらかな曲線を描くためのものなのだけど、説明はまず単なる直線から始めることになる。この下の図の点の動きがすべての基になるからだ。 一の直線があって、その上を点Mが一定の速度で移動している。この点Mの軌跡は、もちろんだけど、単なる直線になる。いいよね。tというのは線分上をどれだけの割合進んだのかを表す数値だ。 もうひとつ線を増やして、その上に、Mと同じように移動する点をもうひとつ増やすことができる。もともとの点MをM0、新しい点をM1と呼ぶことにしよう。M0とM1が動くルールは同じままだ。M1が増えても特にややこしくなっていることはないね。 さて、ここでM0とM1をつなぐ線を

    中学生でもわかるベジェ曲線