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

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

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

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


(過去ログ 20 を表示中)

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

■7927 / inTopicNo.1)  反時計回り 時計回り すいませんバグありました!
  
□投稿者/ セイン (28回)-(2007/09/19(Wed) 21:45:25)

分類:[.NET 全般] 

以前 反時計回り 時計回りのスレを立てさせていただいたものです。
過去ログを検索しましたが、なくなってしまっていました(TT)

すいませんバグがあったので対応方法ご相談させてください。
[A] {x=43.435263644876358 y=46.805638648666644 z=0.050000000745058060 }
[B] {x=46.820140424800996 y=50.190515428591283 z=0.050000000745058060 }
[C] {x=46.820140424800996 y=50.190515428591283 z=-0.050000000745058060 }
[D] {x=43.435263644876358 y=46.805638648666644 z=-0.050000000745058060 }

この座標のベクトルは約
ベクトル
AB 3 4 0
AC 3 4 -1
AD 0 0 -1

外積
AB×AC -4 3 0
AC×AD -4 3 0


上のがいせきの合計値のXYZをすべて足すと0なので、面積や座標の回転方向が求まりませんでした><
ご教授お願いします。





引用返信 編集キー/
■7929 / inTopicNo.2)  Re[1]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ 恣意の (15回)-(2007/09/19(Wed) 23:23:51)
>過去ログを検索しましたが、なくなってしまっていました(TT)
過去ログは以下ですかね?(過去ログ18)

・時計回り、反時計回り判定
http://bbs.wankuma.com/index.cgi?mode=al2&namber=6130&KLOG=18

# ちなみにアドバイスはできないので、他の人よろしくー
引用返信 編集キー/
■7931 / inTopicNo.3)  Re[1]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ れい (130回)-(2007/09/20(Thu) 01:09:23)
No7927 (セイン さん) に返信
> 上のがいせきの合計値のXYZをすべて足すと0なので、面積や座標の回転方向が求まりませんでした><
> ご教授お願いします。

「がいせきの合計値」というのが何をさすのか分かりませんが。
面積であるところの外積の絶対値の合計も、
外積のベクトルとしての総和も、0ではありません。
普通に面積も法線ベクトルも求まってるように見えますが。

引用返信 編集キー/
■7940 / inTopicNo.4)  Re[2]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (29回)-(2007/09/20(Thu) 11:58:28)
2007/09/20(Thu) 13:23:43 編集(投稿者)
No7931 (れい さん) に返信
> ■No7927 (セイン さん) に返信
>>上のがいせきの合計値のXYZをすべて足すと0なので、面積や座標の回転方向が求まりませんでした><
>>ご教授お願いします。
> 
> 「がいせきの合計値」というのが何をさすのか分かりませんが。
> 面積であるところの外積の絶対値の合計も、
> 外積のベクトルとしての総和も、0ではありません。
> 普通に面積も法線ベクトルも求まってるように見えますが。
> 

あれ?すいません。もう一度
[A]	{x=45.702596842378597 y=49.072971846168883 z=1.0000000000000000 }
[B]	{x=46.820140424800996 y=50.190515428591283 z=1.0000000000000000 }
[C]	{x=46.820140424800996 y=50.190515428591283 z=-1.0000000000000000 }
[D]	{x=45.702596842378597 y=49.072971846168883 z=-1.0000000000000000 }
↓

ベクトル
[AB]	{x=1.1175435824223996 y=1.1175435824223996 z=0.00000000000000000 }
[AC]	{x=1.1175435824223996 y=1.1175435824223996 z=-2.0000000000000000 }
[AD]	{x=0.00000000000000000 y=0.00000000000000000 z=-2.0000000000000000 }
↓

外積
[AB×AC]	{x=-2.2350871648447992 y=2.2350871648447992 z=0.00000000000000000 }
[AC×AD]	{x=-2.2350871648447992 y=2.2350871648447992 z=0.00000000000000000 }


外積の計算結果
sum	{x=-1.1175435824223996 y=1.1175435824223996 z=0.00000000000000000 }

sum.x + sum.y + sum.z = 0;

計算結果そのものが間違っているんでしょうか?

引用返信 編集キー/
■7947 / inTopicNo.5)  Re[3]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ れい (131回)-(2007/09/20(Thu) 13:28:59)
2007/09/20(Thu) 13:38:39 編集(投稿者)
2007/09/20(Thu) 13:35:34 編集(投稿者)

No7940 (セイン さん) に返信
> あれ?すいません。もう一度
> [A] {x=45.702596842378597 y=49.072971846168883 z=1.0000000000000000 }
> [B] {x=46.820140424800996 y=50.190515428591283 z=1.0000000000000000 }
> [C] {x=46.820140424800996 y=50.190515428591283 z=-1.0000000000000000 }
> [D] {x=45.702596842378597 y=49.072971846168883 z=-1.0000000000000000 }
> ↓
> 計算結果
> sum {x=-1.1175435824223996 y=1.1175435824223996 z=0.00000000000000000 } GLPoint3
>
> sum.x + sum.y + sum.z = 0;
>
> 計算結果そのものが間違っているんでしょうか?

前のスレッドの面積の話は読んでないので、
sumというのが何をもとめてるのか知りませんが。

手計算だと

AB=(1.1,1.1,0)
AC=(1.1,1.1,-2)
AD=(0,0,-2)

ABxAC = (-2.2,2.2,0)
ACxAD = (-2.2,2.2,0)

なので法線ベクトルは
(-2.2,2.2,0)/|(-2.2,2.2,0)| = (-1,1,0)/ sqrt(2)
面積は
|(-2.2,2.2,0)|/2+|(-2.2,2.2,0)|/2 = 2.2*sqrt(2)
ですね。

というか、何をバグといってるのかわからないです。

外積や法線ベクトル、面積を求める方法自体は間違っていません。
セインさんの実装に関しては、ソースが無いとわかりません。

#計算間違ってたのを直しました…
引用返信 編集キー/
■7948 / inTopicNo.6)  Re[3]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ れい (132回)-(2007/09/20(Thu) 13:40:12)
No7940 (セイン さん) に返信
> 2007/09/20(Thu) 13:23:43 編集(投稿者)
> 外積
> [AB×AC] {x=-2.2350871648447992 y=2.2350871648447992 z=0.00000000000000000 }
> [AC×AD] {x=-2.2350871648447992 y=2.2350871648447992 z=0.00000000000000000 }

ここまではOKですが。

> 外積の計算結果
> sum {x=-1.1175435824223996 y=1.1175435824223996 z=0.00000000000000000 }

これはなんですか?

引用返信 編集キー/
■7949 / inTopicNo.7)  Re[4]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (31回)-(2007/09/20(Thu) 14:00:33)
2007/09/20(Thu) 14:37:50 編集(投稿者)
2007/09/20(Thu) 14:10:18 編集(投稿者)
No7948 (れい さん) に返信
> ■No7940 (セイン さん) に返信
>>2007/09/20(Thu) 13:23:43 編集(投稿者)
>>外積
>>[AB×AC] {x=-2.2350871648447992 y=2.2350871648447992 z=0.00000000000000000 }
>>[AC×AD] {x=-2.2350871648447992 y=2.2350871648447992 z=0.00000000000000000 }
>
> ここまではOKですが。
>
>>外積の計算結果
>>sum {x=-1.1175435824223996 y=1.1175435824223996 z=0.00000000000000000 }
>
> これはなんですか?
>

れいさんご指摘ありがとうございます。
れいさんが求めた、
>なので法線ベクトルは
>(-2.2,2.2,0)/|(-2.2,2.2,0)| = (-1,1,0)/ sqrt(2)
>面積は
>|(-2.2,2.2,0)|/2+|(-2.2,2.2,0)|/2 = 2.2*sqrt(2)
>ですね。


この値の求め方がわかっておりませんでした。
どのようにして法線と面積を求められたのでしょうか?

今の私のプログラムは、
外積を求めた後の計算式が、まったくまちがっていたようです。申し訳ございません。

求めた外積の値から
回転方向・ベクトル・面積を出す方法を教えていただけないでしょうか?
よろしくお願いします。
引用返信 編集キー/
■7951 / inTopicNo.8)  Re[5]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (32回)-(2007/09/20(Thu) 15:05:31)
自分で面積を調べてみました。
http://www12.plala.or.jp/ksp/formula/mathFormula/html/node63.html

A*B=(AyBz−AzBy,AzBx−AxBz,AxBy−AyBx)

面積の求め方
S=|A*B|


A*Bをすると、(0,0,0)になってしまうと思うのですが、考え方が間違っているのでしょうか?



引用返信 編集キー/
■7956 / inTopicNo.9)  Re[6]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ Tom Yama (1回)-(2007/09/20(Thu) 16:13:36)
No7951 (セイン さん) に返信
> [A] {x=43.435263644876358 y=46.805638648666644 z=0.050000000745058060 }
> [B] {x=46.820140424800996 y=50.190515428591283 z=0.050000000745058060 }
> [C] {x=46.820140424800996 y=50.190515428591283 z=-0.050000000745058060 }
> [D] {x=43.435263644876358 y=46.805638648666644 z=-0.050000000745058060 }
>
> この座標のベクトルは約
> ベクトル
AB 3.4 3.4 0.00
AC 3.4 3.4 -0.10
AD 0.0 0.0 -0.10
>
> 外積
AB×AC -0.34 0.34 0.00
AC×AD -0.34 0.34 0.00

面積は、外積ベクトルの長さの総計の半分だから、0.48ですね。
※面倒くさいから、計算式は、省略

引用返信 編集キー/
■7959 / inTopicNo.10)  Re[7]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (33回)-(2007/09/20(Thu) 16:36:37)
2007/09/20(Thu) 16:38:29 編集(投稿者)

>>外積
> AB×AC -0.34 0.34 0.00
> AC×AD -0.34 0.34 0.00
>
> 面積は、外積ベクトルの長さの総計の半分だから、0.48ですね。
> ※面倒くさいから、計算式は、省略

Tom Yamaさん ありがとうございます。
外積ベクトルの長さを計算してみました。

ベクトルの長さ
sqrt((x)*(x)+(y)*(y)+(z)*(z))

AB×AC = 0.480832611
AC×AD = 0.480832611

これの総計の半分ってことは0.48
同じ答えになりました。ありがとう^^

法線ベクトルの途中の計算も、教えていただけると幸いです。
引用返信 編集キー/
■7961 / inTopicNo.11)  Re[8]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ Tom Yama (2回)-(2007/09/20(Thu) 16:44:21)
No7959 (セイン さん) に返信
> 法線ベクトルの途中の計算も、教えていただけると幸いです。
???

>>外積
> AB×AC -0.34 0.34 0.00
> AC×AD -0.34 0.34 0.00
が、法線ベクトルですが。。。
「途中の計算」って、何のこと?
引用返信 編集キー/
■7963 / inTopicNo.12)  Re[9]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (34回)-(2007/09/20(Thu) 16:50:15)
No7961 (Tom Yama さん) に返信
> ■No7959 (セイン さん) に返信
>>法線ベクトルの途中の計算も、教えていただけると幸いです。
> ???
>
> >>外積
>>AB×AC -0.34 0.34 0.00
>>AC×AD -0.34 0.34 0.00
> が、法線ベクトルですが。。。
> 「途中の計算」って、何のこと?

座標が4つ(以上に増えたときにも対応できる)の面の法線がほしいのですが...
((AB×AC).x + (AC×AD).x, (AB×AC).y + (AC×AD).y, (AB×AC).z + (AC×AD).z)

-0.68, 0.68, 0

この法線が多角形の法線ってことでよろしいのでしょうか?

引用返信 編集キー/
■7965 / inTopicNo.13)  Re[10]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ Tom Yama (3回)-(2007/09/20(Thu) 17:04:18)
No7963 (セイン さん) に返信
> 座標が4つ(以上に増えたときにも対応できる)の面の法線がほしいのですが...

以前のスレに書いてあるんだけどなぁ〜。
> ・時計回り、反時計回り判定
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=6130&KLOG=18

れいさんの一番最後の発言(7312 / inTopicNo.44)を読み直して、
それでも理解できないところがあれば、ご質問ください。

引用返信 編集キー/
■7970 / inTopicNo.14)  Re[11]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (35回)-(2007/09/20(Thu) 17:46:57)
2007/09/20(Thu) 17:48:56 編集(投稿者)

No7965 (Tom Yama さん) に返信
> ■No7963 (セイン さん) に返信
>>座標が4つ(以上に増えたときにも対応できる)の面の法線がほしいのですが...
>
> 以前のスレに書いてあるんだけどなぁ〜。
>>・時計回り、反時計回り判定
>>http://bbs.wankuma.com/index.cgi?mode=al2&namber=6130&KLOG=18
>
> れいさんの一番最後の発言(7312 / inTopicNo.44)を読み直して、
> それでも理解できないところがあれば、ご質問ください。
>



>凸な3点を取得できればいいことになります。
>一次関数の最大値・最小値で探すという方法があります。

複数の点のうち、一番X座標の大きな点を取る。
そのひとつ前の点と最大の点と次の点を3つを使って、法線計算?

3次元だと、3次元上の最大の点と、隣り合う2点を使えば、そこが必ずトツ型だから、
その3てんをつかって計算すればOK?

ということでしょうか?
(3次元の場合X座標がすべて同一の座標が来る可能性があるので、
X、Y 最低でも2点見てあげるだけでOK?)

引用返信 編集キー/
■7974 / inTopicNo.15)  Re[12]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ Tom Yama (4回)-(2007/09/20(Thu) 18:24:27)
No7970 (セイン さん) に返信
> X、Y 最低でも2点見てあげるだけでOK?)
そうですよねぇ〜、OKなんでしょか?(ヲィ!

とりあえず、ダメな場合は思いついてませんが、十分だという確信が持てているわけでもありません。
※散々、えらそうなこと言ってて、すみません。


P.S. ところで、
> 2) 外積を用いた符号付面積による方法
2次元の場合は、これでも計算できるのですが、
3次元の場合でも、使える方法なんでしょうか?
やり方が、全然、思いつかないのですが、、、どなたか、ご存知ないでしょうか?
引用返信 編集キー/
■7978 / inTopicNo.16)  Re[13]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (36回)-(2007/09/20(Thu) 19:00:57)
No7974 (Tom Yama さん) に返信
> ■No7970 (セイン さん) に返信
>>X、Y 最低でも2点見てあげるだけでOK?)
> そうですよねぇ〜、OKなんでしょか?(ヲィ!
>
> とりあえず、ダメな場合は思いついてませんが、十分だという確信が持てているわけでもありません。
> ※散々、えらそうなこと言ってて、すみません。
>
>
> P.S. ところで、
>>2) 外積を用いた符号付面積による方法
> 2次元の場合は、これでも計算できるのですが、
> 3次元の場合でも、使える方法なんでしょうか?
> やり方が、全然、思いつかないのですが、、、どなたか、ご存知ないでしょうか?


>>>(3次元の場合X座標がすべて同一の座標が来る可能性があるので、
>>>X、Y 最低でも2点見てあげるだけでOK?)

3点の合計が一番大きな点をピックアップするようにすれば、法線に必要な3点を取ってくることができました。

Tom Yama さんと同じことかもしれませんが、
この3点から時計回り反時計回りって判断できると思いますか?
3次元なので、面積による方法が使えないと思うのですが・・・
どなたかご存知でしたら教えてください。
引用返信 編集キー/
■7982 / inTopicNo.17)  Re[14]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ Tom Yama (5回)-(2007/09/20(Thu) 19:54:45)
No7978 (セイン さん) に返信
> この3点から時計回り反時計回りって判断できると思いますか?
この質問に答える前に、

「時計回り反時計回り」というのは、「視線」に対して相対的に決まるものだということが、わかっておられますか?

要するに、ある向きから多角形を見たときに、「反時計回り」に見える場合、
その反対側に回り込んで、同じ多角形を見ると、「時計回り」に見える

って、単なる、当たり前の話なんですが。。
※ここまで言えば、答えもわかります、よね?

ちなみに、2次元の場合に「視線」の話が出てこないのは、みなさん、暗黙の内に1つの視線が設定しているからです。
※まあ、普通、紙の裏から透かして見るヤツなんざぁ、おらんわな。
引用返信 編集キー/
■7983 / inTopicNo.18)  Re[15]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ セイン (37回)-(2007/09/20(Thu) 20:52:40)
No7982 (Tom Yama さん) に返信
> ■No7978 (セイン さん) に返信
>>この3点から時計回り反時計回りって判断できると思いますか?
> この質問に答える前に、
>
> 「時計回り反時計回り」というのは、「視線」に対して相対的に決まるものだということが、わかっておられますか?
>
> 要するに、ある向きから多角形を見たときに、「反時計回り」に見える場合、
> その反対側に回り込んで、同じ多角形を見ると、「時計回り」に見える
>
> って、単なる、当たり前の話なんですが。。
> ※ここまで言えば、答えもわかります、よね?
>
> ちなみに、2次元の場合に「視線」の話が出てこないのは、みなさん、暗黙の内に1つの視線が設定しているからです。
> ※まあ、普通、紙の裏から透かして見るヤツなんざぁ、おらんわな。

暗黙的に、上から下に見てるから、時計回り・反時計回りの概念があるのであって、
3D空間上では、その分類そのものがないということでしょうか?

引用返信 編集キー/
■7994 / inTopicNo.19)  Re[16]: 反時計回り 時計回り すいませんバグありました!
□投稿者/ Tom Yama (7回)-(2007/09/20(Thu) 23:08:15)
No7983 (セイン さん) に返信
> 3D空間上では、その分類そのものがないということでしょうか?
何で、そっちの方に行くかな?

ないんだったら、こんな仄めかすような言い方はせずに、はっきりないって、言いますが。
引用返信 編集キー/
■8014 / inTopicNo.20)  Re[14]: 反時計回り 時計回り すいませんバグありました!
 
□投稿者/ y4yama (25回)-(2007/09/21(Fri) 11:01:37)
No7978 (セイン さん) に返信
> 3点の合計が一番大きな点をピックアップするようにすれば、法線に必要な3点を取ってくることができました。

へこを含む時に、「3点の合計が一番大きな点」では、全くNG!ですヨ!
例)X,Yで
1 0,0
2 8,1
3 7,2
4 9,3
5 2,4
6 10,5
7 0,6
8 0,0 =pt1
解決策を聞かないでください。既にれいさんがお答えです

> 3次元なので、面積による方法が使えないと思うのですが・・・
既に私は、答えています(過去)。セイン さん、注意力(か理解力)が不足過ぎです

以下は復習(Tom Yama さんへの回答も含み)
個々のがいせきは、3D上のベクトルであり、へこを含む時には、ある向き(V1)と、それの反対向き(= -V1)の
どちらかです。
i,j,k成分別に和をとれば、出てきたベクトルは、V1か -V1を向いていて、その大きさ/2が面積になります
引用返信 編集キー/

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

管理者用

- Child Tree -