Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package {
- import flash.geom.Point;
- public class ChaikinAlgorithm {
- public function ChaikinAlgorithm(s:StaticClassHelper) {
- }
- static public function processPolygon(arrayOfPoints:Array, times:uint):Array{
- if (times == 0){
- times = 1;
- }
- var result:Array = arrayOfPoints;
- for (var i:int = 0; i < times; i++){
- result = processArray(result);
- }
- return result;
- }
- static private function processArray(arr:Array):Array{
- var newArr:Array = [];
- var newPointA:Point;
- var newPointB:Point;
- for (var i = 0; i < arr.length - 1; i++){
- var a:Point = arr[i];
- var b:Point = arr[i + 1];
- newPointA = multiplyPointWithNumber(a, 3/4).add( multiplyPointWithNumber(b, 1/4));
- newPointB = multiplyPointWithNumber(a, 1/4).add( multiplyPointWithNumber(b, 3/4));
- newArr.push(newPointA, newPointB);
- }
- newPointA = multiplyPointWithNumber(arr[i], 3/4).add( multiplyPointWithNumber(arr[0], 1/4));
- newPointB = multiplyPointWithNumber(arr[i], 1/4).add( multiplyPointWithNumber(arr[0], 3/4));
- newArr.push(newPointA, newPointB);
- return newArr;
- }
- static private function multiplyPointWithNumber(p:Point, n:Number):Point{
- return new Point(p.x * n, p.y * n);
- }
- }
- }
- internal class StaticClassHelper {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement