
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
ワード上Shapeの位置情報を統一...
-
Word 図形の位置
-
ダイアログ内コントロールの位...
-
3次元空間上の2つの座標から...
-
ガウシアンフィルタのCプログラム
-
一番近い点を見つけたい。
-
リアルタイム3Dについて。
-
直線と傾きのある楕円の交点を...
-
DirectXを使ってテクスチャ(画...
-
Excel VBA で自在に図形を変化...
-
エクセルで作った新しいウイン...
-
コントロールの書式設定で、“コ...
-
Minecraft 統合版(PC)の描画距...
-
スピンボタンを右クリックして...
-
ゲームでは結局どっちが良いの?
-
エディットボックスの処理で画...
-
皆さん、おはようございます♪ ...
-
文字色 エクリプス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
c言語でキーボードから2点の座...
-
ワード上Shapeの位置情報を統一...
-
シーケンサー(PLC?)で制...
-
Excel VBA で自在に図形を変化...
-
多角形の内部かどうか判定する方法
-
ガウシアンフィルタのCプログラム
-
エクセルで回転する座標の出し方
-
選択範囲の座標値の抽出
-
エクセルである点からの距離で...
-
ダイアログ内コントロールの位...
-
y=x^2の座標をプロットするプロ...
-
有限要素法(FEM)について教え...
-
有限要素法について教えてください
-
C言語 配列で座標
-
C言語で制作するピラミッドアー...
-
PanelとCanvasの違いについて
-
タッチパッドのタッチ座標取得
おすすめ情報