Цитата:
Сообщение от Tails
Но все-же, меня интересовало решение без использования методов сторонних классов, чистое решение.
|

Код AS3:
var rotation:Number = 54;
var x:Number = 60;
var y:Number = 60;
var width:Number = 100;
var height:Number = 100;
var scaleX:Number = 0.9;
var scaleY:Number = 0.5;
var sprite1:Sprite = new Sprite();
sprite1.graphics.beginFill(0xFF0000);
sprite1.graphics.drawRect(-width * .5, -height * .5, width, height);
sprite1.rotation = rotation;
sprite1.scaleX = scaleX;
sprite1.scaleY = scaleY;
sprite1.x = x;
sprite1.y = y;
sprite1.alpha = 0.5;
addChild(sprite1);
var angle2Rad:Number = rotation * Math.PI / 180;
var sinT:Number = Math.sin(angle2Rad);
var cosT:Number = Math.cos(angle2Rad);
var scaledWidth:Number = width * scaleX;
var scaledHeight:Number = height * scaleY;
var centerX:Number = scaledWidth * .5;
var centerY:Number = scaledHeight * .5;
var wX:Number = scaledWidth - centerX;
var hY:Number = scaledHeight - centerY;
var cosX:Number = cosT * centerX;
var sinX:Number = sinT * centerX;
var cosWX:Number = cosT * wX;
var sinWX:Number = sinT * wX;
var cosY:Number = cosT * centerY;
var sinY:Number = sinT * centerY;
var cosWY:Number = cosT * hY;
var sinWY:Number = sinT * hY;
var vertexData:Vector.<Number> = new Vector.<Number>();
vertexData[0] = x - cosX - sinWY;
vertexData[1] = y - sinX + cosWY;
vertexData[2] = x - cosX + sinY;
vertexData[3] = y - sinX - cosY;
vertexData[4] = x + cosWX + sinY;
vertexData[5] = y + sinWX - cosY;
vertexData[6] = x + cosWX - sinWY;
vertexData[7] = y + sinWX + cosWY;
var indexData:Vector.<int> = new <int>[0, 1, 2, 0, 2, 3];
var sprite2:Sprite = new Sprite();
sprite2.graphics.beginFill(0x00FF00);
sprite2.graphics.drawTriangles(vertexData, indexData);
sprite2.alpha = 0.5;
addChild(sprite2);