プログラミングの為の数学と算数 vol.2at TECHプログラミングの為の数学と算数 vol.2 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドの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++; 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch