flash on 2013-3-2
♥0 |
Line 55 |
Modified 2013-03-02 12:54:02 |
MIT License
archived:2017-03-20 14:04:34
ActionScript3 source code
/**
* Copyright ohisama ( http://wonderfl.net/user/ohisama )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/cvNV
*/
package
{
import flash.display.Sprite;
import flash.geom.Point;
public class FlashTest extends Sprite
{
public function FlashTest()
{
var maxAngle : Number = 2 * Math.PI;
var x : int = 200;
var y : int = 200;
var p1 : Point;
var m : int = Math.random() * 20 + 3;
var n1 : Number = Math.random() * 10;
var n2 : Number = Math.random() * 10;
var n3 : Number = Math.random() * 10;
for (var i : Number = 0; i <= maxAngle; i += 0.01)
{
var p2 : Point = SuperShape(m, n1, n2, n3, i);
if (i > 0)
{
graphics.lineStyle(1, 0);
graphics.moveTo(x + p1.x * 150, y + p1.y * 150);
graphics.lineTo(x + p2.x * 150, y + p2.y * 150);
}
p1 = p2;
}
}
private function SuperShape(m : int, n1 : Number, n2 : Number, n3 : Number, phi : Number) : Point
{
var r : Number = 0;
var t1 : Number = 0;
var t2 : Number = 0;
var a : Number = 1;
var b : Number = 1;
var x : Number = 0;
var y : Number = 0;
t1 = (1 / a) * Math.cos((m / 4) * phi);
t1 = Math.abs(t1);
t1 = Math.pow(t1, n2);
t2 = (1 / b) * Math.sin((m / 4) * phi);
t2 = Math.abs(t2);
t2 = Math.pow(t2, n3);
r = Math.pow((t1 + t2), (1 / n1));
if (r != 0)
{
r = 1 / r;
x = r * Math.cos(phi);
y = r * Math.sin(phi);
}
var p : Point = new Point(x, y);
return p;
}
}
}