curve)とは,縦方向と横方向の2つの単振動を組み合わせてできる曲線です。リサジュー図形とも言われます。詳しくは、Wikipediaのリサジュー図形を見て下さい。リサージュと書かれているページもあるようですが、発音的には、リサジューが近いようです。実際に聞いたことがないのでわかりませんが...以下のような式で描く点を求めています。sin(b*t)rは半径、aとbは任意の正数。a/bは振幅比を表します。このプログラムでは位相差は0にしています。C#のコード以下、NGraphicsを使ってリサジュー曲線を描くC#のコードです。IObservable<T>、IObserver<T>を実装して、描画のコードと座標を求めるコードを分離させています。Program.csいわゆるメインプログラム。LissajousCurveクラス、Drawerクラスをつかって、リサジュー曲線を描いています。aとbの値は、ここでリテラルとして記述しています。}}LissajousCurve.csリサジュー曲線を描くための座標を求めています。描画は、後述のDrawerクラスが受け持っています。LissajousCurveクラスは、IObservable<T>を実装しています。購読者オブジェクト(Drawerクラス)に座標を渡して描画してもらいます。}}Drawer.csLissajousCurveクラスからの通知を受け取り、EasyCanvasクラスを使って線を描きます。このクラスは描くのがリサジュー曲線かどうかは関知しません。このクラスはIObserver<Line>を実装している購読者オブジェクトです。}}EasyCanvas.csNGraphicパッケージを利用して、線を描いています。結果はpngファイルにしています。C#のコードは、GitHubに公開しています。結果aとbの値を変えて何パターンのリサジュー曲線を描いてみました。Pageで公開したものを加筆・修正したものです。upLoginユーザーは見つかりませんでした。