プログラミングの為の ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
719:デフォルトの名無しさん 07/03/25 16:53:40 補間は、とりあえず線形補間とすれば、 テーブルの中身: double ax[N*30]; double ay[N*30]; double aL[N*30]; double L=0; ax[i] = cx + W * cos(i * 2 * PI / N); ay[i] = cy + H * sin(i * 2 * PI / N); if( i != 0 ) L+= hypot(cx-ocx , cy-ocy); aL[i]=L; ocx=cx; ocy=cy; のテーブルを作るでしょ? Lを周長の代用として、 c= L*i/N で aL[k]<=c && aL[k+1]<c になる k を見つけて比例で分割して w = ((c-aL[k]) /(aL[k+1]-aL[k]) + k) :2*Pi/N を角度にするという感じ 720:デフォルトの名無しさん 07/03/25 17:04:31 >>718 >円周に沿って l の座標を求める方法 楕円積分の逆関数だから、楕円関数使って求まる気がする。 もちろん、楕円関数の値は数値的に計算するものだけど。 721:719 07/03/25 17:13:07 ゴメンミス テーブルは aL だけでいい。 double aL[N*30]; double L=0; for( i=0;i<30*N;i++}{ ax = cx + W * cos(i * 2 * PI / N); ay = cy + H * sin(i * 2 * PI / N); if( i != 0 ) L+= hypot(ax-oax , ay-oay); aL[i]=L; oax=ax; oay=ay; } 次のループは for( i=0;i<N;i++}{ で while(aL[k]>c) k++;
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5375日前に更新/259 KB
担当:undef