C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[20]: 反時計回り 時計回り すいませんバグありました! [1]


(過去ログ 20 を表示中)

[トピック内 32 記事 (21 - 32 表示)]  << 0 | 1 >>

■8031 / inTopicNo.21)  Re[15]: 反時計回り 時計回り すいませんバグありました!
  
□投稿者/ Tom Yama (8回)-(2007/09/21(Fri) 14:14:27)
No8014 (y4yama さん) に返信
> 以下は復習(Tom Yama さんへの回答も含み)
ありがとうございます。

> 既に私は、答えています(過去)。セイン さん、注意力(か理解力)が不足過ぎです
私も、以前スレ、まともには読んでませんでした。
今頃になって、真面目に読み返しましたが、、、全部、書いてありますね。
どうやら、でしゃばったマネをしてしまったようです。申し訳ありません。

> へこを含む時に、「3点の合計が一番大きな点」では、全くNG!ですヨ!
どうして、「絶対値」だとか、「合計」だとか、元の文章にはない単語が、勝手に挿入されるんだろう?

引用返信 編集キー/
■8077 / inTopicNo.22)  Re[15]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ れい (133回)-(2007/09/21(Fri) 23:32:50)
なんかこの質問と相性がよくないようです。
緊急の用事が入ってしばらくみれませんでした。

No7978 (セイン さん) に返信
> 3点の合計が一番大きな点をピックアップするようにすれば、法線に必要な3点を取ってくることができ

これは言葉を間違っていると思います。

「点」はベクトル量です。
ベクトルの足し算は一般に定義されていますので、合計も定義されています。
大きさも、絶対値として、一般に定義されています。

言葉を字面どおり解釈すると、
3つの座標の、ベクトル量としての和の、各成分の2乗の、合計の、平方が最大になるような3点を選ぶ、
という意味になります。

これは、点の始点に依存する量になり、
私には何を求めているのか全くわかりません。

各成分の和が最大になるような点の前後合わせて3点なら意味が通じます。

No8014 (y4yama さん) に返信
> へこを含む時に、「3点の合計が一番大きな点」では、全くNG!ですヨ!

そのとおり。
上で述べたように、「3点の合計が一番大きな点」では何もわかりません。
ですが、
「各成分の和が最大になるような点の前後合わせて3点」なら、
y4yamaさんの言うベクトル列でも大丈夫です。
なぜなら、「各成分の和」は1次関数でかけ、x+y+zであるからです。

行列演算、ベクトル演算はプログラムと非常に相性がよく、頻繁に出てきます。
プログラマに必要な数学知識は何かと訊かれたら、
私は線型代数を最初にあげます。
必要だと思いますよ。

No7974 (Tom Yama さん) に返信
> P.S. ところで、
>>2) 外積を用いた符号付面積による方法
> 2次元の場合は、これでも計算できるのですが、
> 3次元の場合でも、使える方法なんでしょうか?

ポリゴンが3角形なら自明ですよね。2辺の外積で求まります。
ポリゴンが多角形の場合、3角形に分割して計算するのが基本です。
ある1点を決め、そこから多の全ての点に線を引き、ポリゴンを分割します。
最近の分割線2つで外積を求め、それらを全てベクトル量として合成すれば、
法線と面積がでます。
多点が同一平面に無いときは、平均の法線になってしまい、
最初の1点に依存する量が出てしまいます。
これは分割線の外積が平行であるかを確認すれば対応できるので、
同時に全ての点が同一平面にあるか無いかの確認もできます。

また、3次元の場合は3ベクトルの外積で平行6面体の体積が求まります。
4次元以上の場合、外積の定義により、いろいろ計算できます。
引用返信 編集キー/
■8136 / inTopicNo.23)  Re[16]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (38回)-(2007/09/25(Tue) 10:21:14)
No8077 (れい さん) に返信
> なんかこの質問と相性がよくないようです。
> 緊急の用事が入ってしばらくみれませんでした。
>
> ■No7978 (セイン さん) に返信
>>3点の合計が一番大きな点をピックアップするようにすれば、法線に必要な3点を取ってくることができ
>
> これは言葉を間違っていると思います。
>
> 「点」はベクトル量です。
> ベクトルの足し算は一般に定義されていますので、合計も定義されています。
> 大きさも、絶対値として、一般に定義されています。
>
> 言葉を字面どおり解釈すると、
> 3つの座標の、ベクトル量としての和の、各成分の2乗の、合計の、平方が最大になるような3点を選ぶ、
> という意味になります。
>
> これは、点の始点に依存する量になり、
> 私には何を求めているのか全くわかりません。
>
> 各成分の和が最大になるような点の前後合わせて3点なら意味が通じます。
>
> ■No8014 (y4yama さん) に返信
>>へこを含む時に、「3点の合計が一番大きな点」では、全くNG!ですヨ!
>
> そのとおり。
> 上で述べたように、「3点の合計が一番大きな点」では何もわかりません。
> ですが、
> 「各成分の和が最大になるような点の前後合わせて3点」なら、
> y4yamaさんの言うベクトル列でも大丈夫です。
> なぜなら、「各成分の和」は1次関数でかけ、x+y+zであるからです。
>
> 行列演算、ベクトル演算はプログラムと非常に相性がよく、頻繁に出てきます。
> プログラマに必要な数学知識は何かと訊かれたら、
> 私は線型代数を最初にあげます。
> 必要だと思いますよ。
>
> ■No7974 (Tom Yama さん) に返信
>>P.S. ところで、
> >>2) 外積を用いた符号付面積による方法
>>2次元の場合は、これでも計算できるのですが、
>>3次元の場合でも、使える方法なんでしょうか?
>
> ポリゴンが3角形なら自明ですよね。2辺の外積で求まります。
> ポリゴンが多角形の場合、3角形に分割して計算するのが基本です。
> ある1点を決め、そこから多の全ての点に線を引き、ポリゴンを分割します。
> 最近の分割線2つで外積を求め、それらを全てベクトル量として合成すれば、
> 法線と面積がでます。
> 多点が同一平面に無いときは、平均の法線になってしまい、
> 最初の1点に依存する量が出てしまいます。
> これは分割線の外積が平行であるかを確認すれば対応できるので、
> 同時に全ての点が同一平面にあるか無いかの確認もできます。
>
> また、3次元の場合は3ベクトルの外積で平行6面体の体積が求まります。
> 4次元以上の場合、外積の定義により、いろいろ計算できます。


土日祝をはさんでしまい、申し訳ございません。
ご指摘のとおり、理解不足でした。
基本的な部分がわかっていないため、ネットなどで我流で調べていたため、
間違って解釈をしてしまっていた部分があったようです。

ひとつずつ順を追って呼んで行き、どこがわかっていないかか確認します。

がんばりますので、みなさん引きつづきお付き合いいただけると幸いです。
引用返信 編集キー/
■8139 / inTopicNo.24)  Re[17]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (39回)-(2007/09/25(Tue) 10:50:06)
2007/09/25(Tue) 10:51:33 編集(投稿者)
ひとつずつですいません。
> へこを含む時に、「3点の合計が一番大きな点」では、全くNG!ですヨ!
ごめんなさい。これについては言葉の選び間違いです。
「各成分の和が最大になるような点の前後合わせて3点」
にて1点を選んでおりました。
(xで1点、yで1点、zで1点 この3つの合計といいたかったんです^^;
本来そのような表現をしないのが普通ですよね。ごめんなさい。)

れいさんがとy4yamaさんが教えていただいている
>y4yamaさんの言うベクトル列でも大丈夫です。
>なぜなら、「各成分の和」は1次関数でかけ、x+y+zであるからです。

この部分については使う言葉は間違っていましたが、理解はできていると思います。


■8014 / inTopicNo.20 y4yamaさんに出していただいた例

座標	x	y	z	成分の和
A	0	0	0	0
B	8	1	0	8.062257748
C	7	2	0	7.280109889
D	9	3	0	9.486832981
E	2	4	0	4.472135955
F	10	5	0	11.18033989
G	0	6	0	6
H	0	0	0	0


成分の和のうち一番大きな点はFなので

E F G の3点は凸型とわかります。

ここまでの凸型部分を求めるところまではOKですよね?

引用返信 編集キー/
■8140 / inTopicNo.25)  Re[18]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (40回)-(2007/09/25(Tue) 10:50:21)
2007/09/25(Tue) 11:09:39 編集(投稿者)
2007/09/25(Tue) 11:04:22 編集(投稿者)

<pre><pre>面積---------------------------------------
ベクトル
AB 8 1 0
AC 7 2 0
AD 9 3 0
AE 2 4 0
AF 10 5 0
AG 0 6 0
AH 0 0 0

外積
AB×AC 0 0 9
AC×AD 0 0 3
AD×AE 0 0 30
AE×AF 0 0 -30
AF×AG 0 0 60
AG×AH 0 0 0

外積の和
合計 0 0 72
面積 = (abs(x)+abs(y)+abs(z))/2

なので、面積は36 cm2



法線ベクトル---------------------------------------
法線を求める際に使用する3点は、
成分の和より、座標EFGとなります。

ベクトル
EF 8 1 0
EG -2 2 0

EF×EG 0 0 18


法線ベクトルは、 (0,0,18)


回転方向---------------------------------------
法線ベクトルは、 の結果をi=0, j=0, k=18とすると、
下記条件より、反時計回り。

i+j+k> 0 反時計回り。
i+j+k< 0 時計回り。
i+j+k==0 回転方向なし



こういった計算でよいでしょうか?</pre></pre>
引用返信 編集キー/
■8195 / inTopicNo.26)  Re[19]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ れい (140回)-(2007/09/26(Wed) 02:12:22)
No8140 (セイン さん) に返信
> 外積の和
> 合計 0 0 72
> 面積 = (abs(x)+abs(y)+abs(z))/2

外積の和は合ってますが、
面積の計算方法は違います。

「ベクトルの絶対値」とは「ベクトルの長さ」のことです。
ですので、
sqrt(0^2+0^2+72^2)=72
面積 = sqrt(0^2+0^2+72^2)/2 = 36
です。

> 法線ベクトルは、 (0,0,18)

あっています。

> 回転方向---------------------------------------
> 法線ベクトルは、 の結果をi=0, j=0, k=18とすると、
> 下記条件より、反時計回り。
>
> i+j+k> 0 反時計回り。
> i+j+k< 0 時計回り。
> i+j+k==0 回転方向なし

成分を足すとは言っていません。
y4yamaさんの例題は2次元ですので、
法線ベクトルは必ずz軸に平行で、上向きか下向きになります。
座標系に右手系を用いるか、左手系を用いるかで異なりますが、
この法線ベクトルの向きで右回りか左回りが判定できます。
引用返信 編集キー/
■8213 / inTopicNo.27)  Re[20]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ Zee (21回)-(2007/09/26(Wed) 12:34:20)

このネタはまだおわってなかったんですか^^;

> y4yamaさんの例題は2次元ですので、
> 法線ベクトルは必ずz軸に平行で、上向きか下向きになります。
> 座標系に右手系を用いるか、左手系を用いるかで異なりますが、
> この法線ベクトルの向きで右回りか左回りが判定できます。

そのとおりですね。外積を出すのは2次元での定義であり、
前のスレッドでも書いてあることです。
2次元の公式は3次元に使えませんから。(公式の前提条件に違反するから)

3次元は視点が定義できないので、多様化します。
周るのであれば、視点という軸があるはず
前提条件を整理して、過去の内容を見直せば理解できると思います。
引用返信 編集キー/
■8222 / inTopicNo.28)  Re[20]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (41回)-(2007/09/26(Wed) 14:39:02)
2007/09/26(Wed) 14:40:35 編集(投稿者)

No8195 (れい さん) に返信
> ■No8140 (セイン さん) に返信
>>外積の和
>>合計 0 0 72
>>面積 = (abs(x)+abs(y)+abs(z))/2
>
> 外積の和は合ってますが、
> 面積の計算方法は違います。
>
> 「ベクトルの絶対値」とは「ベクトルの長さ」のことです。
> ですので、
> sqrt(0^2+0^2+72^2)=72
> 面積 = sqrt(0^2+0^2+72^2)/2 = 36
> です。
>
>>法線ベクトルは、 (0,0,18)
>
> あっています。
>
>>回転方向---------------------------------------
>>法線ベクトルは、 の結果をi=0, j=0, k=18とすると、
>>下記条件より、反時計回り。
>>
>>i+j+k> 0 反時計回り。
>>i+j+k< 0 時計回り。
>>i+j+k==0 回転方向なし
>
> 成分を足すとは言っていません。
> y4yamaさんの例題は2次元ですので、
> 法線ベクトルは必ずz軸に平行で、上向きか下向きになります。
> 座標系に右手系を用いるか、左手系を用いるかで異なりますが、
> この法線ベクトルの向きで右回りか左回りが判定できます。

れいさんありがとうございます。 Zeeさん ごめんなさい^^;物分りが悪くて。
面積・と法線ベクトルについては理解できました。
反時計回り、時計回りの判定ですが、
> この法線ベクトルの向き

例の場合ですと、法線ベクトルは、 (0,0,18)の場合ですよね。
2次元なので、Zが正なら反時計周り、Zが負なら時計回りと判断できます。
そこまでは理解できたのですが、
> 座標系に右手系を用いるか、左手系を用いるかで異なりますが、
> この法線ベクトルの向きで右回りか左回りが判定できます。

左手座標系(左手系)で考えています。(左手系右手系は今勉強したところです。)
http://homepage3.nifty.com/first_physics/vector_analysis/va_coordinatesys.html

この座標系に対して、判定するということは、求まった法線ベクトルが、
どの方向に向いていれば、反時計回り、どの方向に向いていれば、時計回り。

と判断する必要があるということですよね。
■7002 / inTopicNo.31や■6924 / inTopicNo.29)で同じ様な内容が書いてあるのですが、
判定方法が、まだ理解できていません。
申し訳ございませんが、ご教授ください。


引用返信 編集キー/
■8273 / inTopicNo.29)  Re[21]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ れい (141回)-(2007/09/27(Thu) 03:38:55)
No8222 (セイン さん) に返信
> と判断する必要があるということですよね。
> ■7002 / inTopicNo.31や■6924 / inTopicNo.29)で同じ様な内容が書いてあるのですが、
> 判定方法が、まだ理解できていません。

普通は法線ベクトルと視線ベクトルの内積の正負で判断します。

そういえば。

2次元でも座標系は2つありますので、
どちらを使っているか考えないとダメですね。
とくにこの分野だと。
引用返信 編集キー/
■8274 / inTopicNo.30)  Re[18]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ れい (142回)-(2007/09/27(Thu) 03:50:25)
いま気づきましたが。

No8139 (セイン さん) に返信
> ■8014 / inTopicNo.20 y4yamaさんに出していただいた例
>
> 座標 x y z 成分の和
> A 0 0 0 0
> B 8 1 0 8.062257748
> C 7 2 0 7.280109889
> D 9 3 0 9.486832981
> E 2 4 0 4.472135955
> F 10 5 0 11.18033989
> G 0 6 0 6
> H 0 0 0 0
>
>
> 成分の和のうち一番大きな点はFなので
>
> E F G の3点は凸型とわかります。
>
> ここまでの凸型部分を求めるところまではOKですよね?

これ、成分の和の値が間違ってます。

10+5 = 15 != 11.18033989 = sqrt(10^2+5^2)

成分の和は文字通り、成分の和です。
絶対値はベクトルの場合は普通長さを指します。

言葉はきちんと正確に使いましょう。
引用返信 編集キー/
■8312 / inTopicNo.31)  Re[19]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (42回)-(2007/09/27(Thu) 20:19:48)
No8274 (れい さん) に返信
> いま気づきましたが。
> これ、成分の和の値が間違ってます。
>
> 10+5 = 15 != 11.18033989 = sqrt(10^2+5^2)
>
> 成分の和は文字通り、成分の和です。
> 絶対値はベクトルの場合は普通長さを指します。
>
> 言葉はきちんと正確に使いましょう。

すいません。ありがとうございます。
成分の和は下記式なのですね。
sum = x + y + z
僕はベクトルの長さで判断していました。
ベクトルの長さで、トツ部分を見つけること自体間違っていますでしょうか?
原点0,0,0からのベクトルの長さでトツ図形を見つける方法と、やっていることは同じですかね?

(表のタイトルを成分の和→ベクトルの長さに変更が正しい修正方法?)
引用返信 編集キー/
■8332 / inTopicNo.32)  Re[20]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ れい (143回)-(2007/09/28(Fri) 00:24:21)
No8312 (セイン さん) に返信
> ベクトルの長さで、トツ部分を見つけること自体間違っていますでしょうか?
> 原点0,0,0からのベクトルの長さでトツ図形を見つける方法と、やっていることは同じですかね?
> (表のタイトルを成分の和→ベクトルの長さに変更が正しい修正方法?)

簡単に証明できますが、
ベクトルの長さで判断しても間違ってはいません。
ベクトルの長さを求めるのに計算量が多く、無駄なだけです。
引用返信 編集キー/

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -