프로세싱 튜토리얼 시간과 날짜 데이터

시간과 날짜 데이터

이번 장은 프로세싱 시간과 날짜 데이터를 변수로 프로그램을 조정하는 것을 소개한다.

소개할 구문:

second(), minute(), hour), millis(), day). month(), year)

과거 문명들은 해시계나 물시계로 시간의 흐름을 시각화했지만 현대인들은 대부분 디지털 시계나 시. 분. 초침이 있는

12시간 단위 아날로그시계를 사용한다. 이 물건들은 당대의 기술을 증명하는 역할을 한다. 숫자식 디지털 계시기는 밝고 저 렴한 디스플레이가 필요한 디지털 시계에 적합하고 둥근 기어들이 모여 만들어진 시계는 시간의 원형적 개념에 부합한다고 할 수 있다. 첨탑 만한 대형 시계에 들어가던 거대한 기어와 추 등의 구성요소는 기술 발전 덕분에 점점크기가 줄고 저렴해 져 이제 가전제품, 휴대폰, 컴퓨터와 같은 디지털 기기는 항상 시간과 날짜를 표시해준다.

현재의 시간과 날짜 정보를 프로그램에 적용함으로써 새로운 탐구의 장이 열린다. 현재의 시간 데이터를 활용해 특정 시 간에 영상을 작동시키는 코드를 구성하거나 날짜에 따라 디스플레이 색상을 바꾸거나 매 시간 정각마다 애니메이션을 재생 하는 디지털 시계를 만들 수도 있다. 시간과 날짜 정보를 입력할 수 있게 되면서 소프트웨어를 이용해 기억과 상기, 흥미도 얻을 수 있게 되었다.

시 분 초

프로세싱의 프로그램은 컴퓨터의 시간 정보를 읽을 수 있다. 현재의 초 정보는 second() 함수로 얻을 수 있으며 0~59의 값을 반환한다. 현재의 분 정보는 minute() 함수를 사용하면 되며 이것도 0~59의 값을 반환한 다. 현재의 시각 정보는 hour ) 함수를 사용하며 24시간 단위 기준으로 0~23의 값을 반환한다. 이 단위에서 자정은 0. 정오는 12로 반환되며 오전 9시는 9이고 오후 5시는 17이다. 현재의 시간을 확인하기 위해 이 프로그램을 구동해보자.

int s = second();

/ Returns values from 0 to 59

int m = minute);

/ Returns values from 0 to 59

int h = hour );

/ Returns values from 0 to 23

printin(h + ":" + m + ":" + s); // Prints the time to the console

이 함수들을 draw() 블록 안에 기입하면 시간 정보를 지속적으로 얻을 수 있다. 다음 예시는 매 초마다 현재의 시간 정 보를 얻어 콘솔을 업데이트한다.

int lastSecond = 0;

void setup () {

size (100, 100);

}

void draw) {

ints = second();

int m = minute );

int h = hour ();

// Only prints once when the second changes

if (s != lastSecond) |

printin(h + ":" + m + "." + s);

lastSecond = s;

}

}

text() 함수를 이용해 디스플레이 창에 시간 데이터를 불러와 시간을 표시하는 시계를 만들어보자. Df( ) 함수(323 )는 왼쪽부터 오른쪽으로 숫자를 균일하게 정렬하는 데 사용된다. 한 자리 수는 숫자 왼쪽에 자동으로 0이 붙으므로 모든 시간 정보는 자동적으로 두 자리 수로 변환된다.

PFont font;

void setup() {

size(100, 100);

font = createFont"mono", 16);

textFont(font);

textAlign(CENTER);

}

void draw() {

background(0);

int s = second();

int m = minute );

int h = hour );

// The nf() function spaces the numbers nicely

String t = nf(h,2) + ":“ + nf(m,2) + ”:“ + nf(s, 2

text(t, 50, 55);}

다음 예시에서 수직선들은 현재의 시, 분, 초를 나타낸다. 디스플레이 창의 왼쪽 끝은 0이며 오른쪽은 각 시간요소의 최 대값이다. 원래 시간함수 값의 0~59, 0~23의 2가지 형태를 띠므로 이 시간요소들은 0~99의 범위로 자동 치환된다.

void setup() {

size(100, 100);

noSmooth();

stroke (255);}

void draw() {

background(0);

float s = map(second( ), 0, 59, 0, 99);

float m = map(minute(), 0, 59, 0, 99);

float h = map(hour(), 0, 23, 0, 99);

line(s, 0, s, 33);

line(m, 34, m, 66);

line(h, 67, h, 100);}

시간 값을 맵핑해 전통적인 시계 모양에 초, 분, 시침을 달아 놓을 수도 있다. 이 경우, 시간을 원의 한 점으로 표시하 기 위해 시간 값은 0~2m의 범위로 맵핑한다. hour() 함수는 24시간 단위로 값을 반환하므로 프로그램을 이용해 시간 값 %12를 해 12시간 단위로 변환한다.

void setup() {

size (100, 100);

stroke (255);

}

void draw() {

background(0);

fill (80);

noStroke );

// Angles for sin() and cos() start at 3 o'clock;

I subtract HALF_PI to make them statt at the top

ellipse(50, 50, 80, 80);

float s = map(second(), 0, 60, 0, TWO_PI) - HALF_PI;

float m = map(minute(), 0, 60, 0, 'TWO_PI) - HALF_PI;

float h = map(hour() % 12, 0, 12, 0, TWO_PI) - HALF_PI;

stroke (255);

line(50, 50, cos(s) *38 + 50, sin(s)*38 + 50);

line (50, 50, cos(m)*30 + 50, sin(m) *30 + 50);

line(50, 50, cos(h)*25 + 50, sin(h)*25 + 50);

}

Leave a Comment