Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://tadpolizemedia.blog118.fc2.com/tb.php/208-2939f182

-件のトラックバック

-件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

デカルトの正葉線をProcessingで表示させてみる (Processing 1.5.1)

最近、Processingで様々な曲線を表示させるプログラミングに凝っています。
デカルトの正葉線にトライしてみました。

元の式を極方程式にしないと表示できないので以下の記事を参考にして
コーディングしてみました。情報ありがとうございます!


「プログラム・極形式など」
http://homepage3.nifty.com/kanzakijuku/a0402.html

このサイトにBASICのソースがありますが、肝心の箇所の
理解ができなかったので自分で極方程式に直す計算をしてみました。
その結果ここのソースと同じ式になりましたので、
このサイトのコーディングの意味が理解できました。


「極方程式ってなんなのでしょうか? なんのためにあるんですか?」
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1175647071


デカルトの正葉線


おそらく数学に詳しい方はもっとスマートに
書けるのでしょうが、私にはこれが限界です。


// デカルトの正葉線(folium of Descartes)
// x^3 + y^3 -3axy = 0
// 媒介変数a=20
// tadpolizemedia
// 18th,Oct. 2012

int space = 20; // x軸y軸と壁のすきま
int min_space = 5;
int mid_space = 15;
int fps = 30; // frameRate
int counter;
float r; // 原点からの距離
float rad; // 角度(単位:ラジアン)
int a = 20; // 媒介変数
float prev_x;
float prev_y;
float now_x;
float now_y;

void setup() {
size(600, 600);
background(255);
frameRate(fps);
smooth();
counter = 0;
prev_x = -999; // ダサいけど(-999,-999)
prev_y = -999; // は通らないはずなので・・・

stroke(0);
line(space, height/2, width-space, height/2); // x軸
line(width/2, space, width/2, height-space); // y軸

fill(0);
text("デカルトの正葉線", 50, 30);
text("x^3 - 3axy + y^3 = 0", 50, 50);
text("(0.0)", width/2+min_space, height/2+mid_space);
text("x", width-space-mid_space, height/2+mid_space+min_space);
text("y", width/2+mid_space, mid_space*2);
}

void draw(){

// 度数(counter)をラジアンに
rad = PI/180.0*counter;

// 元の式を極方程式に直してrを求める (もっと簡略化できそうな・・・)
r = (3 * a * sin(rad)*cos(rad))/
(cos(rad)*cos(rad)*cos(rad) + sin(rad)*sin(rad)*sin(rad));

// 見た目を良くするための処理(掛ける値は任意)
r *= 5;

stroke(255, 0, 0);
now_x = r*cos(rad)+width/2;
now_y = -r*sin(rad)+height/2;

if(prev_x == -999 && prev_y == -999)
point(now_x, now_y);
else
line(prev_x, prev_y, now_x, now_y);

// 直前のlineの座標を退避
prev_x = now_x;
prev_y = now_y;

if(counter >= 180){
noLoop();
}

counter += 1;
}


このテーマについてプログラミングを行うのであれば、
以下のサイトも参考になるかもしれません。

「正葉線 」
http://www004.upp.so-net.ne.jp/s_honma/curve/seiyo.htm

スポンサーサイト
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://tadpolizemedia.blog118.fc2.com/tb.php/208-2939f182

0件のトラックバック

0件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

プロフィール

 二代目松四郎

Author: 二代目松四郎


「カメラと動画(+スチル写真)」
「音響と音楽」
「プログラミング」
を主なテーマに活動しています。
映画館と美術館と音楽ホールと
古い街並みが私の学校。

宮城県仙台市在住。

カテゴリー

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

Counter

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。