| ■No6224 (2リットル さん) に返信 > Jittaさんの言われていることと同じになりますが、 > 多角形を3点ごとに分解してベクトル外積の総和をとり、 > 総和が正ならば時計周り、負ならば逆周り、0ならば同一直線状というアプローチはどうでしょうか。 > > 件の例でいうと > vertex[0]を点A、vertex[1]を点B、、、vertex[16]を点Q, vertex[17]を点Rとしたときに > 各3点の外積の総和は次の式になります。 > sum = AB x BC + AC x CD + ,,, + AQ x RA > (ABは点Aから点Bへのベクトルです。) > > セインさんのコードでひっかかったことは > 外積の総和の絶対値が元の多角形の面積と異なってしまうことです。
つうことでこんな多角形の面積計算公式があります。
A = 1/2 SUM(X2 - X1) (Y1 + Y2)
面積を出す公式ですが、 右周りで計算すると負の値に 左回りで計算すると正の値になります。 |