円をメビウスの輪っぽい感じで動かしてみる
メビウスの輪っぽい感じで動かしてみる
研究の副産物です。1年前の。
・・・1年前のほうが面白いことやってるなぁ・・・。
スピードがガンガン増すことによって
いくつものボールが乱舞してるように見えなくもない。
数値は増え続けるので、ある程度のところでやめてあげてください。
Speedが360に近づくとボールがひとつに戻ります
数学をもっとわかればもっと面白いものが作れそう。
package
{
/* メビウスの輪っぽい感じで動かしてみる
*
* 研究の副産物です。1年前の。
* ・・・1年前のほうが面白いことやってるなぁ・・・。
*
* スピードがガンガン増すことによって
* いくつものボールが乱舞してるように見えなくもない。
*
* 数値は増え続けるので、ある程度のところでやめてあげてください。
*
* Speedが360に近づくとボールがひとつに戻ります
* 数学をもっとわかればもっと面白いものが作れそう。
*
*/
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;
[SWF(width="465",height="465",frameRate="40",backgroundColor="0xFFFFFF")]
public class Main extends Sprite
{
private const PI:Number = Math.PI;
private var _cx:uint = stage.stageWidth / 2;
private var _cy:uint = stage.stageHeight / 2;
private var _circle:circle;
private var _r:uint = 200;
private var _radian:Number = 0;
private var _speed:Number = 0;
private var txt1:TextField = new TextField();
private var txt2:TextField = new TextField();
public function Main()
{
init();
}
private function init():void
{
//円を登録
_circle = new circle(0x0000FF,20);
addChild(_circle);
moveCircle();
//テキスト配置
txt1.defaultTextFormat = new TextFormat(null, 20,0x000000);
txt1.x = 0;
txt1.y = 10;
txt1.autoSize = TextFieldAutoSize.LEFT;
addChild(txt1);
txt2.defaultTextFormat = new TextFormat(null, 20,0x000000);
txt2.x = 0;
txt2.y = 30;
txt2.autoSize = TextFieldAutoSize.LEFT;
addChild(txt2);
//イベント登録
this.addEventListener(Event.ENTER_FRAME, moveCircle);
}
private function moveCircle(e:Event = null):void
{
_speed += 0.002; //加速度増加装置
_radian += _speed; //どんどん加速
_radian = Number(_radian.toFixed(4)); //小数点多すぎなのでなんとなくある程度で切ってみる
_circle.x = _cx + _r * Math.cos(_radian);
//_circle.y = _cy + _r * Math.sin(_radian * 2);
_circle.y = _cy + _r * Math.sin(_radian) * Math.cos(_radian);
txt1.text = "speed = " + Math.floor(_speed * 180 / PI).toString();
txt2.text = "degree = " + Math.floor(_radian * 180 / PI).toString();
}
}
}
import flash.display.Sprite;
internal class circle extends Sprite{
public function circle(color:uint,size:uint) {
this.graphics.beginFill(color);
this.graphics.drawCircle(0, 0, size);
this.graphics.endFill();
}
}