mirror of
https://github.com/MapMakersAndProgrammers/alternativa3d-archive.git
synced 2025-10-26 01:49:05 -07:00
40 lines
1.3 KiB
Plaintext
40 lines
1.3 KiB
Plaintext
package com.alternativagame.engine3d.material {
|
|
import flash.geom.Point;
|
|
import com.alternativagame.engine3d.Math3D;
|
|
|
|
public final class Hit {
|
|
|
|
static public function ngon(n:uint, radiusX:Number, radiusY:Number = -1, offsetX:Number = 0, offsetY:Number = 0, angle:Number = 0):Array {
|
|
var res:Array = new Array();
|
|
n = (n < 3) ? 3 : n;
|
|
radiusY = (radiusY < 0) ? radiusX : radiusY;
|
|
angle = Math3D.toRadian(angle);
|
|
var sin:Number = Math.sin(angle);
|
|
var cos:Number = Math.cos(angle);
|
|
|
|
var a:Number = (Math.PI+Math.PI) / n;
|
|
for (var i:uint = 0; i < n; i++) {
|
|
var x:Number = offsetX + Math.sin(a*i)*radiusX;
|
|
var y:Number = offsetY - Math.cos(a*i)*radiusY;
|
|
|
|
var cx:Number = x*cos - y*sin;
|
|
var cy:Number = y*cos + x*sin;
|
|
|
|
res.push(new Point(cx, cy));
|
|
}
|
|
return res;
|
|
}
|
|
|
|
static public function rectangle(width:Number, height:Number, offsetX:Number = 0, offsetY:Number = 0):Array {
|
|
var res:Array = new Array();
|
|
var hw:Number = width/2;
|
|
var hh:Number = height/2;
|
|
res.push(new Point(offsetX - hw, offsetY - hh));
|
|
res.push(new Point(offsetX + hw, offsetY - hh));
|
|
res.push(new Point(offsetX + hw, offsetY + hh));
|
|
res.push(new Point(offsetX - hw, offsetY + hh));
|
|
return res;
|
|
}
|
|
|
|
}
|
|
} |