Flash+actionScript 3.0으로 XY 좌표축 그리고 함수 그래프 그리기 테스트.
플래시 화면 위에서 마우스 드래그로 좌표 중심점의 이동이, 마우스 휠로 좌표의 확대, 축소가 가능하다.

하는 김에 동적으로 함수를 입력받아 그래프로 표시해주는 기능도 넣고 싶었지만 실패. 현재로써는 수식을 해석하거나 혹은 변형하는 것이 그리 만만한 작업이 아닌듯 느껴진다.

xy 좌표 그리기: drawCoordinates(), lineDraw01() 2 함수로 구현.
함수 그래프 그리기: drawFunc(), adjustCenter()
마우스 드래그로 이동, 마우스 휠로 확대축소하기.

14/8/7 목

actionScript 3.0 소스 코드:
var centerX = 250, centerY = 300; //원점 좌표
var mag:Number = 2; //확대율
var mX, mY, mdx, mdy; //마우스 x,y좌표 저장용

function init(){ //초기화
     draws();
     stage.addEventListener(MouseEvent.MOUSE_DOWN,mDown);
     stage.addEventListener(MouseEvent.MOUSE_UP,mUp);
     stage.addEventListener(MouseEvent.MOUSE_WHEEL,mWheel);
}
function draws(){ //좌표와 함수 그래프 그리기
     drawCoordinates(centerX,centerY,mag*10);
     drawFunc(-200,200,2);
}
function mDown(e:MouseEvent){ //마우스 누를때
     mX = mouseX; //마우스 눌린 좌표 기억
     mY = mouseY;
}
function mUp(e:MouseEvent){ //마우스 놓을때
//마우스 눌렀을 때와 놓았을때의 차이를 기준으로
//중심점 이동하여 새로 그리기
     mdx = mX - mouseX;
     mdy = mY - mouseY;
     centerX -= mdx;
     centerY -= mdy;
     graphics.clear();
     draws();
}
function mWheel(e:MouseEvent){ //마우스 휠 돌릴때
//마우스 휠 돌릴때마다 확대 축소율 조정한 뒤 새로 그리기
     if(e.delta > 0){
          if(mag < 50) mag++;
     }else{
          if(mag > 1) mag--;
     }
     graphics.clear();
     draws();
}
function drawFunc(sx:Number,ex:Number,term=10){ //함수 그래프 그리기
//(시작x값,끝x값,간격-기본10)
     var nx, ny, tx, ty;
     tx = sx;
     ty = 1/50*Math.pow(sx,2)+7; 
     graphics.lineStyle(1, 0xff00cc);
     graphics.moveTo(adjustCenter(sx,"x"), adjustCenter(ty,"y"));
     for(var i=sx; i < ex; i += term){
          tx = i;
          ty = 1/50*Math.pow(tx,2)+7;
          nx = adjustCenter(tx,"x",mag);
          ny = adjustCenter(ty,"y",mag);
          graphics.lineTo(nx, ny);
     }
}
function adjustCenter(o, XorY:String, magnificate=10){
//좌표 중앙으로 중심점 이동(원 좌표, x 혹은 y, 확대율)
     //(original 좌표, x여부)
     o *= magnificate;
     if(XorY=="x"){
          o += centerX;
     }else if(XorY=="y"){
          o -= centerY;
          o *= -1;
     }
     return o;
}
function lineDraw01(mX,mY,tX,tY,style1=1,style2=0){ //선그리기 함수
     //(mX,mY)위치로 이동, 그곳에서 (tX,tY)까지 style(굵기,색)대로 선그리기
     graphics.lineStyle(style1, style2);
     graphics.moveTo(mX, mY);
     graphics.lineTo(tX, tY);
}
function drawCoordinates(cx,cy,term){ //좌표 그리기
     //중심점 x,y좌표와 간격을 받아 좌표 그리기.
     var i = term;
     for(i=cy;i>0;i-=term){
          lineDraw01(0,i,stage.stageWidth,i,1,0xcccccc);
     }
     for(i=cy;i < stage.stageHeight;i+=term){
          lineDraw01(0,i,stage.stageWidth,i,1,0xcccccc);
     }
     for(i=cx;i>0;i-=term){
          lineDraw01(i,0,i,stage.stageHeight,1,0xcccccc);
     }
     for(i=cx;i < stage.stageWidth;i+=term){
          lineDraw01(i,0,i,stage.stageHeight,1,0xcccccc);
     }
     lineDraw01(cx,0,cx,stage.stageHeight,1,0x666666);//y축 그리기
     lineDraw01(0,cy,stage.stageWidth,cy,1,0x666666);//x축 그리기
}

init();

오늘 웹 서핑 중 흥미로웠던 것들:
* 마사토끼/joana의 웹툰 '빵점동맹'.
2012년 시작할 때 쯤 흥미로운 웹툰이라고 생각하고 잊어먹었다가 지금 보니 연재가 종료되어 있어 폭 빠져서 보다. 공부의 목적과 컨닝이라는 특이한 소재와 감정을 불러일으키는 상황을 만들어내는 시나리오, 이쁘고 깔끔한 그림.

* 오시기리 렌스케(押切蓮介)의 '하이 스코어 걸' - 90년대 고전 게임들을 소재로 한 러브 코미디 만화. 당시의 다양한 게임들과 그속의 캐릭터들이 실명으로 등장하고 당시 일본의 추억속 모습들을 그리고 있어 일본에선 꽤 인기를 끌어 애니화도 계획되고 있었던 모양. 한데 근래 SNK 플레이모어가 저작권 관련 소송을 걸어 앞으로의 진로가 불투명해진듯.

엔하위키 하이스코어 걸 항목
위키피디아 ハイスコアガール 항목(일문)