package{
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.DropShadowFilter;
[SWF(width="400", height="200",backgroundColor="0xffffff")]
public class Algo2 extends Sprite{
private var balls:Array = [];
private var RADIUS:int = 6;
private var line:Line = new Line(0xff, 4);
public function Algo2(){
var points:Array = [{x:0,y:20}, {x:40,y:38}, {x:80,y:64}, {x:120,y:86},
{x:160, y:96}, {x:200, y:122} , {x:120, y:36}, {x:220, y:102} ,
{x:240,y:144}];
for(var i:int = 0 ; i < points.length ; i++){
var b:Ball = new Ball(0xff0000, RADIUS);
balls.push(b);
addChild(b);
b.x = points[i].x;
b.y = points[i].y;
b.addEventListener( MouseEvent.MOUSE_DOWN, pickup );
b.addEventListener( MouseEvent.MOUSE_UP, place );
b.addEventListener( MouseEvent.MOUSE_MOVE, function(e:*):void{
cal();
});
}
addChild(line);
cal();
}
public function pickup( event:MouseEvent ):void {
// ドラッグ処理を開始して、影フィルターをつける
event.target.startDrag( );
event.target.filters = [ new DropShadowFilter( ) ];
// 最前面に表示されるようにする
setChildIndex( DisplayObject( event.target ), numChildren - 1 );
}
public function place( event:MouseEvent ):void {
// ドラッグ処理を終了して影フィルターをオフ
event.target.stopDrag( );
event.target.filters = null;
cal();
}
private function cal() :void{
var a:Number = 0;
var b:Number = 0;
var sum_xy:Number = 0, sum_x:Number = 0, sum_y:Number = 0, sum_x2:Number = 0;
for each(var ball:Ball in balls) {
sum_xy += ball.x * ball.y;
sum_x += ball.x;
sum_y += ball.y;
sum_x2 += ball.x * ball.x;
}
a = ( balls.length * sum_xy - sum_x * sum_y) / (balls.length * sum_x2 - sum_x*sum_x);
b = (sum_x2 * sum_y - sum_xy * sum_x) / (balls.length * sum_x2 - sum_x*sum_x);
line.x = 0;
line.y = b;
line.rotation = Math.atan(a) / Math.PI * 180;
}
}
}
import flash.display.*;
internal class Ball extends Sprite{
public function Ball(color:int, radius:int){
graphics.beginFill(color);
graphics.drawCircle(0,0,radius);
graphics.endFill();
}
}
internal class Line extends Sprite{
public function Line(color:int, w:int){
graphics.lineStyle(w, color, 0.5);
graphics.moveTo(0,0);
graphics.lineTo(400, 0);
}
}
Author:yamasv@gmail.com
コメント、トラックバック、リンクはお気軽に
-->
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| - | - | - | - | - | 1 | 2 |
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 | - | - | - | - | - | - |