- 1 名前:デフォルトの名無しさん [04/09/05 16:22]
- プログラムに必要な数学、算数に関する話題について
語りましょう。TIPS/Q&Aスレです。
- 687 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 11:03:43 ]
- >>686
ttp://www.netlib.org/lapack/index.html
- 688 名前:686 mailto:sage [2007/01/31(水) 11:13:39 ]
- サンクス>>687
LAPACKでググったら、直線のサンプルもすぐ見つかりました。 ttp://www.sip.eee.yamaguchi-u.ac.jp/kou/lapack.html 実際にやりたいのは真円のフィッティングだから、もうちょっと調査しないと。
- 689 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 11:33:59 ]
- 円だと最小2乗では普通にやったら直線のように解けないよ。
数値解を繰り返しで求めるか ttp://www.tensyo.com/urame/prog/linealgo.htm 中心からの距離の2乗の誤差の2乗で代用すれば解けるそうだ
- 690 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 11:40:36 ]
- >>685
ニューメリカルレシピ・イン・シー
- 691 名前:686 mailto:sage [2007/01/31(水) 11:42:04 ]
- あ、そうですか。では、そのやり方でやります。
やりたいのは4点(真円になるか”?”)から円の中心と半径を決めたいです。 >中心からの距離の2乗の誤差の2乗で代用 ちょっと難? 関係ないけど今回の場合、 ttp://okwave.jp/qa1812202.html は参考にならないような気がしました。
- 692 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 12:02:12 ]
- 円は3点で求まる。 >>689にも ”3点を通る円” で公式が書かれているね
4点なら最小2乗を使うほどにはデータ量が多くない。 4点から3点を取り出しては公式で中心を求めて 4つ求まった中心の平均を出したらどうだろ? その中心から4点への平均距離を求めて、それを半径の代用としたら?
- 693 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 12:09:42 ]
- >>中心からの距離の2乗の誤差の2乗で代用
>ちょっと難? これはデータの特性にもよるだろな。 使った感じでは十分だよ。 もっとも画像からのデータでデータ量は十分あったが 何より式一発で求まるのは非常にありがたい
- 694 名前:691 mailto:sage [2007/01/31(水) 12:19:57 ]
- >>693
ごめんなさい、書き方が悪かったです。 そのやり方が悪いという意味じゃなくて、文章難しくて、 その文章どおりにするには何をどうすれば良いのか考えなきゃという意味です。 >>692 その通りやってみたんですが、トンデモない円が出来て(3点だと上手く行く)。。。 どういう算数でやろう? 最小二乗法は? 「中心からの距離の2乗の誤差の2乗で代用」ってどういう意味? ← 今ここ といった感じです。
- 695 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 12:22:31 ]
- >>692の方法でとんでもない円になるようなデータなら
最小2乗を使ってもとんでもない結果しか出ないよ これがデータ100点あって1個だけ飛び離れてるような状態ならマシだけどさ
- 696 名前:691 mailto:sage [2007/01/31(水) 12:29:27 ]
- >>695
その通りなんですが、 未知データの解析なので、 「最小二乗法を使っても円にならない」ならそれもひとつの結論、 みたいな。
- 697 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 13:38:16 ]
- 何も考えずにたった4点で最小二乗法をやるのは馬鹿げてる。
もし論文なんかで出したら一笑されるぞ。 少数観測点からデータを復元する話は GPS などの位置計測で よくある話で、そういう場合にまともな推定をしようとすれば 観測点の状態が分かってることが必要になる。 たとえば、真の値からのずれがある確率分布に従うと仮定を 置けば、最尤推定などによって最もそれっぽい場所が出る。 正規分布に従うと仮定してよい場合は最尤推定は最小自乗法に 一致するため、多くの GPS ではこの仮定を(知ってか知らずか)置いている。 多量のデータで最小自乗法が有効なのは、中心極限定理によって 分布が正規分布に漸近するため。
- 698 名前:691 mailto:sage [2007/01/31(水) 13:40:21 ]
- あ、このページ
>★最小2乗法による円弧推定 ってそのまんまのタイトルがあった。 3点から円を求めるのもこのページから見つけたのに気付かなかったOTL
- 699 名前:691 mailto:sage [2007/01/31(水) 13:43:33 ]
- >>697
>何も考えずにたった4点で最小二乗法をやるのは馬鹿げてる。 >もし論文なんかで出したら一笑されるぞ。 了解、納得でつ。 必ずしも円になるのか分からないデータの解析なので、 逆にデータ解析結果から観測点が円にならないという結論を出しますが。 ある部分は円、ある部分は円にならず従って応力受けてる、みたいな。
- 700 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 13:48:36 ]
- >逆にデータ解析結果から観測点が円にならないという結論を出しますが。
これはいえない。最小自乗法では円にならなくても、ほかの方法では 円になる場合があるかもしれない。
- 701 名前:699 mailto:sage [2007/01/31(水) 13:57:36 ]
- >>700
じゃあ、ほかの方法教えて。 ところで、 >★最小2乗法による円弧推定 を読んだら、 >この3つの方程式を解けば良い. で終わってる。 解かないといけないのか。
- 702 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 14:12:46 ]
- >>701
上で述べられていた任意の三点の中心の平均や重心は有力。 また、697 で述べたように、最尤推定はひとつの別の方法。 ほかにも最小自乗や最尤推定を部分に含むが、適当な ペナルティ関数を設定して最小化問題として解く手もある。 最尤推定やペナルティ法は、円になるかどうか分からないものの 判定なら、おそらく最小自乗を用いるよりも良い結果が得られる。 (最小自乗では、一直線上のデータは半径が(ほぼ)無限大の円と 判断されるが、通常の応用ではそれを弾きたいことが多い)
- 703 名前:701 mailto:sage [2007/01/31(水) 14:33:09 ]
- >最尤推定やペナルティ法は
これらはライブラリにもなってなさそうだね。 実装難しそう...
- 704 名前:701 mailto:sage [2007/01/31(水) 18:42:23 ]
- >2a( X*X/N -XX)+ 2b(X*Y/N -XY) =X(XX+YY)/N-XXX-XYY ----1)
>2a( X*Y/N -XY)+ 2b(Y*Y/N -YY) =Y(YY+XX)/N-YYY-XXY ----2) >r*r=(XX+YY-2.0(a*X+b*Y) )/N+a*a+b*b; ----3) >この3つの方程式を解けば良い. やっぱこれ何度読んでも分からないんだけど、 4点をどうやって代入するわけでしょうか? 解答が目の前にありながら使いこなせないorz
- 705 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 12:41:01 ]
- >>704
X → 肺i XX → 肺i*xi XXX → 肺i*xi*xi Y → 輩i YY → 輩i*yi YYY → 輩i*yi*yi 以下略 の意じゃね? xi, yi が配列要素で直線上にない3点が最低限必要と。
- 706 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 17:23:56 ]
- >>704
後は、1) 2)式から a,b2変数の連立一次方程式を解けば中心が求まるでしょ? それを3)に代入すれば半径も求まる
- 707 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 10:09:26 ]
- たぶん、質問者の目的には、
4点中 3点で求まる円から、 残った1点までの円からの距離2乗(|中心からの距離-半径|)を出して それを4つ加算した結果、 またはそれを半径で割って正規化したもの でいいんじゃないのか?
- 708 名前:デフォルトの名無しさん [2007/02/28(水) 21:55:01 ]
- 保守アゲと質問募集
- 709 名前:デフォルトの名無しさん [2007/03/25(日) 15:02:16 ]
- 幅 W、高さ H の楕円上に N個の点を等間隔に打とうと思いました。
for(i = 0; i < N; i++) { int x = cx + sin(i * 2 * PI / N) * (W / 2); int y = cy + cos(i * 2 * PI / N) * (H / 2); plot(x, y); } ところがというか当然というか、これだと W = H の円の時にしか点が等間隔になりません。 どうしたら良いでしょうか? 知っていなくてはいけない公式などありましたら教えてくださいませ。
- 710 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 15:24:58 ]
- 少し上のほうにあった,放物線を速さ一定で進むというのと同じ話だよ
- 711 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 15:26:04 ]
- あれ,と思ったけどそれは他スレか
- 712 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 15:44:51 ]
- 楕円の円周の長さは 楕円積分という厄介な分野で
それを等間隔に分割というのは、その厄介な問題に挑戦するという事になる 数式では基本的に解けないから、数値積分で頑張るしかないよ
- 713 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 15:46:43 ]
- W > H > 0になるようにして
int x = cx + W * cos(i * 2 * PI / N); int y = cy + H * sin(i * 2 * PI / N); でどうでっしゃろ?
- 714 名前:713 mailto:sage [2007/03/25(日) 15:47:20 ]
- あ、無理だったごめん
- 715 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 16:06:21 ]
- 楕円関数の近似式をkの値を適当に決めたルックアップテーブルみたいな形で用意しとけばいいんじゃね?
それつかって円周を求めた(ここではLとおく)として 始点(仮に中心からx軸方向に幅/2移動した点としよう)から 円周にそってl ( = n×L, nは適当な実数)分移動したときの座標(x,y)ってのは楽に求まるの? 精度気にしないのならこれでいけると思うんだけど、どうでしょうか?
- 716 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 16:20:25 ]
- 近似でいいのなら、
Nの個数を30倍くらいに増やし一度テーブルを作成して 補間で、近似値を求めるのが一番簡単だろう
- 717 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 16:40:25 ]
- もう少し詳しく。
そのテーブルの中味と、 何のデータを元にして、 何の式で補間するか書いてください お願いします(-∧-)
- 718 名前:709 mailto:sage [2007/03/25(日) 16:51:16 ]
- ありゃ、思いのほか厄介な問題だったんですね・・・
>>715 円周に沿って l の座標を求める方法がよくわからないです。すみません。 >>716 で言う方法かはわかりませんが、自分ならこうやりますがどうでしょう? 1. 30N の全ての点の座標を求たテーブルを作る 2. 隣り合う点との距離を三平方の定理で求めることを全ての点について行い、円周の近時値を計算する 3. 円周を N等分した長さを求め、これを当初の N個の頂点間の距離 d とする 4. 30N のテーブル中の頂点の中から、それぞれの点の円周上の位置(始点からの距離)に近いものを選んで点を打つ
- 719 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 17:04:31 ]
- >>718
>円周に沿って l の座標を求める方法 楕円積分の逆関数だから、楕円関数使って求まる気がする。 もちろん、楕円関数の値は数値的に計算するものだけど。
- 721 名前:719 mailto:sage [2007/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++;
- 722 名前:719 mailto:sage [2007/03/25(日) 17:16:37 ]
- ありゃ、元の式は 違うのか、 上の
ax = cx + sin(i * 2 * PI / N) * (W / 2); ay = cy + cos(i * 2 * PI / N) * (H / 2); に訂正、 続き、 w = ((c-aL[k]) /(aL[k+1]-aL[k]) + k)*2*PI/N; int x = cx + sin(w) * (W / 2); int y = cy + cos(w) * (H / 2); plot(x, y); }
- 723 名前:709 mailto:sage [2007/03/25(日) 17:30:02 ]
- >>722
丁寧にどうもありがとうございます。 よくわかりました。 >>720 まずは楕円積分というのを勉強しなくてはいけなそうです。 おいおいスキルアップしたいと思います。 >>710 よろしければそのスレを教えてもらえないでしょうか。 放物線を速さ一定で進むってのも興味あります。
- 724 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 17:44:59 ]
- 楕円の周長なら
ttp://www.tensyo.com/urame/prog/ALGO.HTM の後ろの方に計算方法が書いてあったけど コレは今回の問題には応用できないな
- 725 名前:しょう [2007/03/25(日) 20:12:39 ]
- ある学校の生徒数は 1年生が全体の三分の一であり、2年生と 3年生の生徒数の比は5:6である。1年生の生徒数をa人、2年生の生徒数をb人とするとき、bをaの式で表せ。 この問題誰か解いてください
- 726 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:19:03 ]
- プログラミング関係ないな。
宿題は他をあたりなさい。
- 727 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:22:52 ]
- 1) a*3=b+c
2) b*6=c*5 1' a*3*5=b*5+c*5 a*3*5=b*5+b*6=b*11 b=a*3*5/11
- 728 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:23:34 ]
- うわーなんてむずかしいもんだいなんだー
- 729 名前:しょう [2007/03/25(日) 20:27:12 ]
- 解らないですか?
- 730 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:28:17 ]
- ヒントください
せめて何学年まであるか、一学年何クラスかぐらいはわからないと・・・
- 731 名前:しょう [2007/03/25(日) 20:31:33 ]
- 高校受験の問題です。問題用紙のままカキコしました。
- 732 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:34:09 ]
- ……('д`)帰れリア厨
- 733 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 20:41:40 ]
- SPI並の難しさだな
中学生じゃ解けないよ 大学入って掃き出し法を習うまでとっておきなさい
- 734 名前:デフォルトの名無しさん [2007/03/25(日) 21:04:47 ]
- 厨房でも溶けるだろ
>727間違ってる 1)a*2=b+c だな。 で、2)はb:c=5:6から出した式ですね あとは連立方程式
- 735 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:31:43 ]
- このスレの上の方で文系は数学から逃げ〜とか言ってたけど
俺数学選択で早稲田受かったよ
- 736 名前:デフォルトの名無しさん [2007/03/25(日) 21:38:14 ]
- おめでと(^O^)/
- 737 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:42:19 ]
- ありがと(^0^)/
まぁ政経だけどねwショボいけど
- 738 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 22:12:11 ]
- 理系で数学から逃げた俺は退学して工場労働者やってるお(^o^)
- 739 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 00:05:29 ]
- >>723
これだった pc11.2ch.net/test/read.cgi/gamedev/1170387853/
- 740 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 00:10:22 ]
- >>734
それを言うなら、 a = (a + b + c) * 1/3 だろ。実際のところ、3学年しかないという前提はどこにもないわけだが。
- 741 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 00:26:09 ]
- >>723
楕円の周長計算、 「使えるだけでいい」という姿勢なら 単に数値計算ライブラリからソースコピればいける気が。
- 742 名前:デフォルトの名無しさん [2007/03/27(火) 01:25:31 ]
- テスト
www.youtube.suppa.jp/?uk5LgzILKQU59%+0kBtqQp0RJf30%+8rTFpttjtSU89%+eKWwj9JoAln29%+OSjDO5IUnWJ14%+amKCPh1YrDR14%+KmClRwiAMOy29%+4gIU8IV2hvR14%+CxM26WyV1_d29%+mIBUzAsDgyE132%+@1@_AutomaticPlay
- 743 名前:デフォルトの名無しさん [2007/03/27(火) 02:01:51 ]
- >>742はコチラへ移動しました
★☆YouTubeのCMを連続動画に☆★ //ame.x0.com/main/070327015730.html ame.x0.com/main/070327015730.html
- 744 名前:デフォルトの名無しさん [2007/03/28(水) 11:26:38 ]
- 円と曲線がどれだけズレてるかの面積?みたいなものはどうやって計算すればよいですか?
- 745 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:31:26 ]
- 曲線が定義済なら、数値積分すればいいじゃない
- 746 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:37:36 ]
- あ、曲線は自由曲線(ドットというか。。。)です。
- 747 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:43:15 ]
- 50レスほど戻れば、似たような話をしているよ
>>689のリンク先のページは見た?
- 748 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 13:40:09 ]
- >>746
その離散点使って、数値積分的なことすれば? Σ(点から直線への距離 × 傾き) みたいなのを。
- 749 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 19:00:37 ]
- 曲率の分散とか?
- 750 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 23:08:36 ]
- >>746
>あ、曲線は自由曲線(ドットというか。。。)です。 ドットを数えろ。
- 751 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 08:38:46 ]
- ラジャ>>750
- 752 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 08:57:37 ]
- 円と離散点群がどれだけズレているかなら、
案1、 (点と中心との距離-半径)^2 の平均 ÷ 半径^2 案2、 ( 点と中心との距離^2 - 半径^2 )^2 の平均 ÷ 半径^4 あたりだろう。
- 753 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 14:03:24 ]
- 「ズレている」がきちんと定義されんとなんとも。
基準円よりも広いところで円をなす点たちと 基準円上のある点にのみ集中する点たちで どっちが「円からズレている」かは一概には言えない。
- 754 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 14:22:10 ]
- そこで残差の二乗の総和ですよ
- 755 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 15:48:26 ]
- 何が「そこで」なの?
残差自乗みたいな簡単な尺度では「(概形が)円からズレてない」 みたいな位相的な構造はとても捕まえられないはずだけども。
- 756 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 16:07:10 ]
- >>753 それは、 ズレを最小にする円があるかどうかの問題になるんじゃないのか?
指定された円とのズレという量があればそれを最小にする半径、中心も求められるわけで・・・ それとも何か素晴らしいアイデアをお持ちで?
- 757 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 16:33:07 ]
- >>756
だから「ズレている」を定義してくれと言ってるんだけどな。 一点に集中してても「ズレてない」とするなら残差自乗で十分だし、 そうでないならより輪郭線抽出などの手法が要るかもしれない。
- 758 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 16:37:32 ]
- 欠点はあるが 簡単な定義は>>752くらいしか無いだろう?
もう少しややこしくするなら、点同士がどれだけ中心からの角度で分散しているかの数値を入れるかい?
- 759 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 16:44:25 ]
- なんとなく想像だけど、手書きの丸と円のずれ具合を定量化したいんじゃないのかな?
だとすれば>750で充分だと思うのだけど。 #目的も判らずに数学的な意味を見出そうとしても虚しいばかりだ。
- 760 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 16:52:34 ]
- ドットを数えるってどうやるの?
- 761 名前:ラジアンの比較で躓いてます mailto:sage [2007/03/29(木) 16:57:43 ]
- 別スレで pc11.2ch.net/test/read.cgi/tech/1175129517/9 の質問をして、最終的にこちらに誘導されてきました。
質問の回答として、以下のコードを教えてもらいました。 v1 … p1→p2 のベクトル v2 … p2→p3 のベクトル struct point { double x, y; }; bool isJustLeft(point v1, piont v2) { double corssProd = v1.x * v2.y - v1.y * v2.x; //外積 double norm1 = v1.x * v1.x + v1.y * v1.y; // |v1|^2 double norm2 = v2.x * v2.x + v2.y * v2.y; // |v2|^2 if( corssProd < 0.0 ) return false; // 時計回りはダメ if( crossProd * crossProd == norm1 * norm2 ) return true; // 直角判定 return false; } でも、ベクトルの外積って通常3次元のベクトルを返しますよね。上記だと > double corssProd = v1.x * v2.y - v1.y * v2.x; //外積 とスカラー値を返しているのですが、今一つやっている意味が判りません。 yuki.to/math_cgi/prybbs.html?log=3&mode=res&no=36824 ぐぐったらこんな掲示板見つけたけど、回答者の答えがイマイチ判りません。 コードを通して、ベクトルを理解したいのですが、誰か教えてもらえませんか?
- 762 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 17:08:28 ]
- v1,v2の外積の結果は、その2つに直角な方向ですが、
v1,v2が平面上なのでZ成分のみとなります。 だから省略したのでしょう
- 763 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 17:24:43 ]
- 外積の定義って曖昧というか、人によって違うというか。
1つは、>>762 の言うように、3次元ベクトルの外積の考え方を使って、 (x1, y1, 0) × (x2, y2, 0) = (0, 0, x1 y2 - x2 y1) の z 成分のみを取ったもの。 もう1つは、n 次元のベクトルは、n - 1 本あれば、それらに垂直なベクトルが決まるので、 n - 1 本のベクトル → 1 本の n 次元ベクトルを求める演算を外積と呼ぶ。 こっちの流儀だち、2次元ベクトルの外積は1本→1本の演算になって、 「積」というとちょっと微妙。 まあ、x1 y2 - x2 y1 は、外積の値というか、 符号付面積、あるいは行列式よね。 3次元ベクトルの外積は、その絶対値が符号付面積になってるから、 その類推で、2次元ベクトル2本の貼る平行四辺形の符号付面積を外積と呼ぶのかも。
- 764 名前:ラジアンの比較で躓いてます mailto:sage [2007/03/29(木) 17:36:19 ]
- >762
なるほど・・・時計回りだとZ値が下方向 反時計回りだと上方向になる性質を利用して、 Z値だけで判断すればいいという事ですね!!
- 765 名前:ラジアンの比較で躓いてます mailto:sage [2007/03/29(木) 17:39:31 ]
- もうひとつ質問ですが、ここは何をやっているのでしょうか?
double norm1 = v1.x * v1.x + v1.y * v1.y; // |v1|^2 double norm2 = v2.x * v2.x + v2.y * v2.y; // |v2|^2
- 766 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 17:47:02 ]
- >>765
え、えっと、変数名もnormだし、コメントもnormだし、normを計算しているんじゃないかなあ。
- 767 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 17:53:54 ]
- 直角であるかどうかは 内積x1*x2+y1*y2 が0になる事
(v1.x * v2.y - v1.y * v2.x)^2 -(v1.x * v1.x + v1.y * v1.y)*( v2.x * v2.x + v2.y * v2.y) を変形してくと・・・・ って内積計算した方が計算量少ないかもしれないが まあ、折角 外積計算したからって所じゃないのかな
- 768 名前:ラジアンの比較で躓いてます mailto:sage [2007/03/29(木) 18:03:57 ]
- >766
一瞬正規化?とか思っちゃいましたが、「ノルム」でしたか・・・orz
- 769 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 18:19:33 ]
- >「ノルム」
って日本語の数学では何だっけ?
- 770 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 18:27:37 ]
- 世の中には日本語の数学と英語の数学があるらしい。
- 771 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 18:37:01 ]
- 定まった和訳は無く、日本語をあててる本も特に知らないなあ。
参考までに、中国語では「范数」と書くそうな。
- 772 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 18:41:31 ]
- >>769
ノルムはノルムじゃない? 数学用語としてじゃなくて、一般には基準とか模範って訳すけど。 ノルムに似たので(というか、絶対値の一般化)付値ってのがあるけど、 それは英語でも valuation。
- 773 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 08:56:16 ]
- 則(のり)じゃなかったか?
片方を90度回転したベクトルで内積をとっても、時計回り判定はできる。 90度回転操作を (x, y) → (-y, x) とすると、外積とコメントされた式と同じになる。 好きな方で解釈するといい。
- 774 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 09:20:27 ]
- 内積外積を使わなくてもこれは解ける
片方のベクトルが水平(y成分が0)になるように回転変換し、 もう一方のベクトルのx成分が0なら垂直で y成分の符号を見ればいい でも、それが内積と外積になっちゃうんだけどね
- 775 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 11:56:04 ]
- プログラミングの学習を先にはじめて、その必要に迫られて
その都度、数学の教養を身に着ける順序でも遅くなくねえ? 問題集をひたすら解くだけの抽象的な数学の本ばかり読んで いると、生きることの意味がわからなくなってくるよ。
- 776 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 11:57:48 ]
- 既出でしたら、ごめんなさい
半径10センチの球表面の座標(XYZ)をファイルに出力したいと考えております 点の間隔は0.1センチぐらいでいいかな、と ファイルに落とす部分は、わかっているんですが 座標を算出するアルゴリズムが、さっぱりわからなくて お分かりになる方、御教授いただけると助かります
- 777 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 12:20:47 ]
- >>755
それが許されればな。 >>756 3次元空間なら x^2 + y^2 + z^2 = 半径^2 を満す実数だったと。 ざっぱになら x と y で for ループ回しながら z の値を算出すすとか。 もしくは 三次元空間の極座標 x = 半径 * sin(th1) * sin(th2) y = 半径 * sin(th1) * cos(th2) z = 半径 * cos(th1) 解説: hp.vector.co.jp/authors/VA030421/fdd06.htm で角度(th1, th2)でループまわすことも考えられる。 角度で回すのなら、球面三角法 ja.wikipedia.org/wiki/%E7%90%83%E9%9D%A2%E4%B8%89%E8%A7%92%E6%B3%95 も見おくべし。
- 778 名前:776 mailto:sage [2007/03/30(金) 12:56:17 ]
- >>>777
ありがとうございます。できたっぽいです たすかりました
- 779 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 20:41:06 ]
- そのような極座標だと、目の細かい場所と粗い場所ができないか
できてもさしつかえないならいいけど、もしさしつかえあるなら ユニバーサルメルカトル図法みたいな雰囲気で局所座標系を とったりするとよさそうな気が
- 780 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 01:53:29 ]
- 等間隔にするならジオデシックスフィア(日本語でなんて言うのか知らん)の頂点として出すとか
- 781 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 02:39:25 ]
- まあ、やっぱり極付近ほど密になるけど、↓みたいなのはある。
www.cubido.at/Blog/tabid/176/EntryID/86/Default.aspx ジオデシックドームの頂点求めるんだたら↓これ? www2.tokai.or.jp/tomo-kun/readmeJ.html
- 782 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 04:54:50 ]
- 正20面体に重心細分を繰り返して得られる多面体とかではどうかね
- 783 名前:デフォルトの名無しさん [2007/04/11(水) 11:07:50 ]
- 自由な曲線(ベジェ曲線か、折れ線の点列)を円弧のあつまりで近似したいんですが、
ヒントはないでしょうか?
- 784 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 11:16:08 ]
- 円弧は半径が決まっているの? つまりフライスのようなので削るというような場合?
単純に円弧で近似したいのがどういう状況か判らないのだけど 曲線の場合は、微分が一致するように接続してゆけばいいのだけど 円弧の場合は2点と半径で求まってしまうので、 どうやっても接続点が尖がってしまう
- 785 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 00:12:15 ]
- 円弧と線分ならどうにかそれっぽくなるかも
- 786 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 08:40:07 ]
- 円弧の半径に制限無かったら、無限小の円弧になるだけだろ。
- 787 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 04:39:53 ]
- 無限小の円弧の集合では曲線は近似できないのでは。
|

|