[0510] 패턴중심적사고와프로그래밍
resize라는 개념적 일관성은 유지할 수 있다.
도형의 갯수 더하기 4개이다 4곱하기이다
Transformer
- Resize move rotate Shear
Complexity
- O(n^2) -> O(n)
Aspect
Cross-Cutting Concerns
세상, 이 세상을 보는 관점을 여러개의 관점으로 바라본 것이다. 음악적 관점 수학적 관점 여러 관점들이 다 똑같은 세상이다.
세상은 왜 배우냐면? 예측하기 위해서이다.
사람이 사자를 어떻게 이기나? 예측하는 것이다. 머릿속에서 미리 어떻게 행동할줄 알고 준비를 하는 것이다. 미리 예측을 하는 것이다. intelligence라는 것은 예측 모델이다. 세상이 왜 돌아가 있냐면 예측을 하기 위해서이다.
준비를 하는 것이다.
추상화가 애매모호하다는 소리가 아니다, abstraction, 즉, 인지한다라고 한다. 사람의 타고난 inteligence는 실체를 보고 말한다. 세상은 복잡하지 않다. 대뇌 몇개가지고 복잡한 세상이 만들어지지 않는다. 경우의 수는 많다. instance가지고 헤매지않아야 한다. 어떤 공부를 하든 제대로만 하면 뭐든지 잘한다.
Transformer은 Resize, Move 등 한꺼번에 가질 수 있지만 , Transformer은 객체를 두가지로 나눌 수 있다. 객체는 존재 가치.
어떠한 대상과 뭔가를 Transformation을 역할자를 분리해놓은 것이다.
Transformation
User Scenario
Move
-> Start Point - End Point
-> Origin - Distance
Reize
-> Start Point - End Point
-> Origin - Ratio
Rotate
-> Start Point - End Point
-> Origin - Angle
Resize 는 몇배로 늘릴거냐. Move는 거리를 따지며, Rotate는 Angle을 따진다.
Affine Transformation
도구가 적용되려면 어떠한 이벤트를 발생시킬 때 밑에 도형이 있어야한다. 이것이 제약조건이다. Mouse press Event는 2Point action이기 때문에, Event-Action을 보면
Button Presses
- On Shape()
OnAnchor()
- ResizeAnchor()
Resize
- RotateAnchor()
Rotate
- Else
-> Move
Else
-> ShapeTool selected
-> Draw
Else
-> Select
선택이 안되어있으면 Resize Rotate가 안 된다.
마우스라는 것은 pointing device라고 한다. 점의 정보를 주는 그러한 장치이다.
점은 왜 필요한가? 어떤 경우에 점의 정보가 필요한가? 점은 어디서 나오나? 좌표
수학 기하학, 대수를 배운다.
대수와 기하가 무엇인지 조사해와라.
필요한 것: 마우스 위치의 정보
이차형 평면에서의 위치가 필요하다.
Event-Action
DrawingPanel은 Toolbar을 참조해야 한다. ToolBar의 상태를 보아야 한다
* Abstract Event
- Start, eMoving, eCont, eEnd
이렇게 하면 nPoint를 만들 수 있다.
* 2Point
- eStart, eMoving, eEnd
* nPoint
- eStart, (eMoving, eCont)*, eEnd
이걸 알려주면 얘의 상태에 따라 도구를 Selection할 것이다.
Transformer
Mover
Resizer
Rotater
도형 1점밖에 안줌
Anchor 그려오기
Cursor 변경하기