No.3
- 回答日時:
逆三角関数を使うまでもありません.
Y
↑
│ A
│ /
│ /θ
│ B───C
│
└──────→X
A=(Ax, Ay), B=(Bx, By), C=(Cx, Cy),
BA = (BAx, BAy) = ベクトル B→A = A - B,
(つまり (BAx, BAy) = (Ax - Bx, Ay - By)),
BC = (BCx, BCy) = ベクトル B→C = C - B = (Cx - Bx, Cy - By)
とします.
2次元ベクトル BC と BA の外積 (クロス積ともいう) は
次のように定義されます.
BC × BA = BCx * BAy - BAx * BCy
この値は,|BC| * |BA| * sinθ に一致します.
(ただしθは B→C から B→A の方向に回転するとき+とします.)
したがって,BC × BA の符号を見れば,右回りか左回りかがわかります.
(ついでに言うと,|BC × BA| は BC,BA を2つの辺とする平行四辺形の面積です.)
このように外積を使えば,2回の乗算だけですむので,
逆三角関数を使う場合に比べて高速かつ計算誤差が少なくなります.
tan-1 を使う場合のように,分母が0になる場合の処理が不要で,
プログラムも簡単になります.
なお,ベクトルの外積は3次元で使われることが多く,
「外積」で検索してもほとんどが3次元の話だと思います.
3次元ベクトル同士の外積は3次元ベクトルになりますが,
2次元ベクトル同士の外積はスカラーになります.
(3次元外積において,元の2つのベクトルがXY平面内にある場合を考えれば,
外積のX,Y成分は0になるので,Z成分だけを考えればよい.
それが2次元の外積となる.)
No.2
- 回答日時:
>(θ1=(atan(ts1)/2π)*360)
間違えました。
x1-x2が正の時
θ1=(atan(ts1)/π)*180
x1-x2が負の時
θ1=(π-(atan(ts1)/π)*180
です。
No.1
- 回答日時:
右回り、左回りというのは線分ABと線分BCの成す角が180°より小さくなるのは右回り、左回りどちらかということですよね?
VB分からないので方法だけ書きます。(Cしかしらない)
A(x1,y1),B(x2,y2),C(x3,y3)
とするとまず線分AB,BCとx軸との成す角(θ)を求める。(tan(θ)を求める)
ts1=tan(θ1)=(x1-x2)/(y1-y2)
ts2=tan(θ2)=(x1-x2)/(y1-y2)
※ここで分子が0になった場合のエラー処理をすること
(x1-x2が0の場合でy1-y2が正の場合θ1=90°,負の場合はθ1=270°)
※TANを求める関数があるはず
ABとx軸の成す角(θ1):atan(ts1)
BCとx軸の成す角(θ2):atan(ts2)
※この値はラジアンで表されているので角度に直す
(θ1=(atan(ts1)/2π)*360)
※ATAN(アークタンジェント)を求める関数があるはず
線分AB、BCの成す角(θ3)は
θ3=θ2-θ1
後はこの値が正の時左回りで負の時が右回りとなる。
(もちろん±180°の時はどちらでもない)
というか自分で書いていてもっと簡単な方法がある気がする。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マインクラフト(pc版)で座標...
-
グラフの交点の求め方(Excel)
-
ワード上Shapeの位置情報を統一...
-
3次元空間上の2つの座標から...
-
C言語 配列で座標
-
閉図形の座標の配列が右回りか...
-
C#でxy座標グラフを描きたい。
-
ビットマップ画像の座標を小数...
-
Vector2をC++で使うには?
-
OpenCvSharp4による画像判定解...
-
空間上の二点を結ぶ直線上に任...
-
Excel VBA で自在に図形を変化...
-
エクセルシート上のマウスポイ...
-
ダイアログ内コントロールの位...
-
シーケンサー(PLC?)で制...
-
エクセルである点からの距離で...
-
y=x^2の座標をプロットするプロ...
-
複数コントロール(ラベル)を...
-
座標を結んだ線分の交差
-
タッチパッドのタッチ座標取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
エクセルで回転する座標の出し方
-
ワード上Shapeの位置情報を統一...
-
始点、終点の二つの座標と半径...
-
閉図形の座標の配列が右回りか...
-
シーケンサー(PLC?)で制...
-
C言語 配列で座標
-
Excel VBA で自在に図形を変化...
-
多角形の内部かどうか判定する方法
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
ガウシアンフィルタのCプログラム
-
ダイアログ内コントロールの位...
-
空間上の二点を結ぶ直線上に任...
-
スクリーン座標からワールド座...
-
回転する矩形同士の当たり判定...
-
ピクチャボックスの座標取得
おすすめ情報