Hey stu69art, good luck with your search for an alternative algorithm. Here are a few testcases that you can use to verify your results that covers most of the cases you might encounter. Let us know how you get on:)
#! perl -slw use strict; sub direction{ local($_, @_= @_); push @_, $_[0]; $_+= $a->[0]*$b->[1]-$a->[1]*$b->[0] while ($a,$b)=(shift,$_[0]), +@_; $_ < 0; } =pod | . | /.\ | // \\ |// - |\\ _ | \\ // | \v/ +---v----- =cut my @inflectiveC = ([0,3],[3,6],[5,4],[4,4],[3,5],[1,3],[3,1],[4,2],[5, +2],[3,0]); print direction(@inflectiveC) ? 'Clockwise' : 'Not clockwise'; my @inflectiveA = reverse @inflectiveC; print direction(@inflectiveA) ? 'Clockwise' : 'Not clockwise'; my @mirroredXC = reverse map{ [ 0 - $_->[0], $_->[1]] } @inflectiveC; print direction(@mirroredXC) ? 'Clockwise' : 'Not clockwise'; my @mirroredXA = map{ [ 0 - $_->[0], $_->[1]] } @inflectiveC; print direction(@mirroredXA) ? 'Clockwise' : 'Not clockwise'; my @mirroredYC = reverse map{ [$_->[0], 0 - $_->[1]] } @inflectiveC; print direction(@mirroredXC) ? 'Clockwise' : 'Not clockwise'; my @mirroredYA = map{ [$_->[0], 0 - $_->[1]] } @inflectiveC; print direction(@mirroredXA) ? 'Clockwise' : 'Not clockwise';
In reply to Re: Making CLOCKWISE work
by BrowserUk
in thread Making CLOCKWISE work
by stu96art
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |