오늘(2022-08-19)의 commit은 다음과 같다.
- selectingBox implementation
- scroll direction reverse
- component delete shortcut removed: backspace
- camera moving interpolation default value changed to .15
- component selection
- remove unused isDoubleClicked function
- selected objects arrange implemented
- selected objects remove implemented
- selected objects rotate implemented
- lastDirection implementation changed
- information table
- rotation seleted single object deselection
- calculation satisfaction rate added
- wire and socket afterimage color implemented
- index.html typo
- minimal satisfaction implementation
- single rotation selection disable disable
- component, wire, selected object count info
- basic component name changed to english
- grid fadeout
- render optimization
- remove not used Component.changeDirection
이번 커밋에서 중요한 변화 내역을 꼽자면 다음이 있다.
선택 상자
선택 상자는 일정한 정사각형 구간 안에 들어온 컴포넌트를 선택하고 한번에 동작을 수행하기 위해 제안되었다. 선택 상자를 통해서 선택된 오브젝트들은
를 수행할 수 있도록 했다.
정보 표
정보 표는 현재 실행중인 프로그램에 대한 통찰을 주어주기 위해 제안되었다.현재 화면에 있는 컴포넌트의 수나 카메라의 위치같은 기본적인 정보와 함께 이번 프레임에서 수행하는 계산의 수, 적어도 하나의 이터레이션을 진행하기 위해 필요한 최소 계산 횟수와 같은 수치를 알아볼 수 있다.
정보 표를 만든 궁극적인 이유는 충족도에 따라서 자동으로 계산 제한을 조절하기 위함이었는데, 여기서 충족도라고 함은 실행을 자연스럽게 하기 위해 필요한 계산의 수까지 현재의 계산 제한이 얼마나 도달했는지를 말한다. 예를 들어서 NOT 컴포넌트 15개가 환 구조로 연결된 경우, NOT 환을 한 바퀴 돌리는 데에는 15번의 계산이 필요하다. 이때 만약 계산제한이 10으로 설정되어있다면 충족도는 10/15이다.
와이어 / 소켓 잔상
계산 제한에 따르면 한 프레임에서도 Wire와 Socket들은 여러 상태를 가질 수 있다. 이것을 표현하기 위해서 한 프레임을 계산할 때에 바뀐 상태들을 0과 1 사이에서 평균내어, ON_COLOR와 OFF_COLOR 사이를 보간하여 표현했다.

그림에서 보면 NOT 컴포넌트 15개가 연결된 환에 연결된 와이어들의 색과 완전히 켜진 상태(1)인 와이어의 색이 약간 차이를 보인다는 것을 알 수 있다.