| 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へのベクトルです。)
セインさんのコードでひっかかったことは 外積の総和の絶対値が元の多角形の面積と異なってしまうことです。
素人考えなので間違ってたらごめんえ。 |