forked from: SmithChartTest
/**
* Copyright Daniel.Alberto.Bogado ( http://wonderfl.net/user/Daniel.Alberto.Bogado )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/3WgU
*/
// forked from son's SmithChartTest
package {
import flash.display.Graphics;
import flash.display.Sprite;
[SWF(width="500", height="500", frameRate="60")]
public class SmithTest extends Sprite {
private const Z0:int = 500; //計算の都合上10倍している
private var canvas:Sprite = new Sprite();
public function SmithTest() {
// write as3 code here..
canvas.y = stage.stageHeight/2;
canvas.x = stage.stageWidth/10 + stage.stageWidth/2;
drawSmith();
//addChild(canvas);
}
private function drawSmith():void {
//var canvas:Sprite = new Sprite();
var scale:int = 200;
var canvasGraphics:Graphics = canvas.graphics;
canvasGraphics.lineStyle(1);
for(var i:Number = 0; i < 50; i += 1) {
canvasGraphics.moveTo(i, j);
for (var j:Number = 0; j < 50; j += 1) {
canvasGraphics.drawCircle(reGamma(i, j)*scale, imGamma(i, j)*scale, 1);
canvasGraphics.drawCircle(reGamma(i, j)*scale, imGamma(i, j)*scale*-1, 1);
//canvasGraphics.lineTo(reGamma(i, j)*200, imGamma(i, j)*200);
}
}
addChild(canvas);
}
private function reGamma(R:Number, X:Number):Number {
R = R*100;
X = X*100;
var gamma:Number = (R*R - Z0*Z0 + X*X)/((R + Z0)*(R + Z0) + X*X);
return gamma;
}
private function imGamma(R:Number, X:Number):Number {
R = R*100;
X = X*100;
var gamma:Number = (2*X*Z0)/((R + Z0)*(R + Z0) + X*X);
return gamma;
}
}
}