더 웹툰 예고살인

유명 만화작가가 그리는대로 살인이 일어나는 이유는?

공포스러움보다 스릴러에 가까운 느낌?

다음이 지원을 많이 해준 듯?

Share Comments

Bubble Pop

비누방울이 터지는 것을 표현해 보았습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int min;
int max;
void setup() {
size(320, 180);
frameRate(8);
min = 0;
max = 100;
}
void draw() {
// clear slowly
noStroke();
colorMode(RGB);
fill(color(255, 255, 255, 127));
rect(0, 0, width, height);
// draw circle
colorMode(HSB);
fill(random(255), 255, 255);
float diam = random(min, max);
ellipse(random(width), random(height), diam, diam);
}
Share Comments

Analog Clock

아날로그 시계를 만들어보았다.

흘러가는 세월아…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
int s; // size
float r;
void setup() {
s = 300;
r = s / 2;
size(s, s);
smooth();
frameRate(15);
}
void draw() {
strokeWeight(1.5);
// translate to center
translate(s / 2, s / 2);
rotate(radians(270));
// draw circle
stroke(#000000);
fill(#FFFFFF);
ellipse(0, 0, s, s);
// draw hour numbers
float u = radians(360 / 12);
for(int h = 0; h < 12; h++) {
pushMatrix();
float x = (r * 0.9) * cos(h * u);
float y = (r * 0.9) * sin(h * u);
translate(x, y);
rotate(radians(90));
fill(#000000);
textAlign(CENTER, CENTER);
text(h, 0, 0);
popMatrix();
}
// second needle
float ts = radians(second() * (360 / 60));
stroke(#FF0000);
line(0, 0, (r * 0.9) * cos(ts), (r * 0.9) * sin(ts));
// minute needle
float tm = radians(minute() * (360 / 60));
stroke(#00FF00);
line(0, 0, (r * 0.8) * cos(tm), (r * 0.8) * sin(tm));
// hour needle
float th = radians(hour() * (360 / 12));
stroke(#0000FF);
line(0, 0, (r * 0.7) * cos(th), (r * 0.7) * sin(th));
}
Share Comments

Untitled 1

int s;  // size
int u;  // unit
PVector p; // line position
PVector d; // direction

void setup() {

  s = 300;
  u = 2;
  p = new PVector(0, 0);
  d = new PVector(u, 0); // left to right

  size(s, s);
  background(#FFFFFF);
  colorMode(HSB, s / u);
}

void draw() {

  // direction
  if (p.x > s) {
    p.x = s;
    d.x = 0;
    d.y = u;
  }
  else if (p.y > s) {
    p.y = s;
    d.x = -u;
    d.y = 0;
  }
  else if (p.x < 0) {
    p.x = 0;
    d.x = 0;
    d.y = -u;
  }
  else if (p.y < 0) {
    p.y = 0;
    d.x = u;
    d.y = 0;
  }

  // draw
  stroke(frameCount % (s / u), 127, 127);
  line(p.x, p.y, s - p.y, p.x);

  // update
  p.add(d);
}
Share Comments

Oblivion

드론을 수리하는 잭이 기억을 찾아가며 진짜 적을 물리치는 이야기이다.

컴퓨터가 우주에서 지시하는 것과 톰 그루즈가 타고 다니는 비행선이 독특했다.

SF 장르를 좋아하기 때문에 재미있게 보았다.

Share Comments

Breakout

프로세싱으로 만들어보았다.

교육용 샘플 정도로만 만들었기 때문에 더 이상 버전업은 하지 않을듯…

‘R’ 키를 누르면 재시작한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
PVector pos;
PVector delta;
int paddle;
int nrows;
int ncols;
float bwidth;
float bheight;
boolean[][] bricks;
void setup() {
size(320, 240);
smooth();
colorMode(HSB);
pos = new PVector(width / 2, height / 2);
delta = new PVector(-2, -2);
paddle = 20;
nrows = 5;
ncols = 5;
bwidth = width / ncols;
bheight = 15;
bricks = new boolean[nrows][ncols];
reset();
}
void draw() {
// clear
background(#FFFFFF);
// hit wall ?
if (pos.x < 0 || pos.x > width) {
delta.x = -delta.x;
}
if (pos.y < 0) {
delta.y = -delta.y;
}
// hit paddle ?
if (pos.y > height) {
if (pos.x > mouseX - paddle && pos.x < mouseX + paddle) {
delta.y = -delta.y;
}
}
// hit brick ?
for (int r = 0; r < nrows; r++) {
for (int c = 0; c < ncols; c++) {
if (bricks[r][c]) {
if (pos.x > bwidth * c && pos.x < bwidth * (c + 1) &&
pos.y > bheight * r && pos.y < bheight * (r + 1)) {
// remove brick
bricks[r][c] = false;
// bound ball
delta.y = -delta.y;
}
}
}
}
// draw paddle
stroke(#000000);
strokeWeight(10);
line(mouseX - paddle, height, mouseX + paddle, height);
// draw ball
noStroke();
fill(#000000);
ellipse(pos.x, pos.y, 20, 20);
// draw bricks
stroke(#FFFFFF);
strokeWeight(1);
for (int r = 0; r < nrows; r++) {
fill(color(255.0 / nrows * r, 255, 255));
for (int c = 0; c < ncols; c++) {
if (bricks[r][c]) {
rect(bwidth * c, bheight * r, bwidth, bheight);
}
}
}
// move
pos.x += delta.x;
pos.y += delta.y;
}
void keyPressed() {
if(key == 'r' || key == 'R') {
reset();
}
}
void reset() {
// pos
pos.x = width / 2;
pos.y = height / 2;
// delta
delta.x = -2;
delta.y = -2;
// brick
for (int r = 0; r < nrows; r++) {
for (int c = 0; c < ncols; c++) {
bricks[r][c] = true;
}
}
}
Share Comments

Tumblr에 Processing 포스팅 하기

저는 텀블러(Tumblr)라고 하는 블로깅 서비스를 사용하고 있는데요. 오늘은 텀블러에 프로세싱(Processing)을 포스팅하는 방법에 대해 알아보도록 하겠습니다.

방법은 무척 쉽습니다. 텀블러의 포스팅 종류를 Text로 선택하고 아래 소스코드 안에 프로세싱 코드를 포함하여 입력하시면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
<script src="https://github.com/downloads/processing-js/processing-js/processing-1.4.1.min.js"></script>
<script type="text/processing" data-processing-target="processing-canvas-hello">
void setup() {
size(320, 340);
}
void draw() {
ellipse(width / 2, height / 2, 50, 50);
}
</script>
<canvas id="processing-canvas-hello"> </canvas>

다음의 두 가지 항목만 유의하시기 바랍니다.

  • script 태그의 data-processing-target 속성값과 canvas 태그의 id 속성값은 임의로 주어도 되지만 둘은 항상 같아야 합니다. ex) “processing-canvas-hello”
  • 각 게시물마다 위의 속성값들이 달라야 합니다. 왜냐하면 여러 게시물에 하나의 페이지에 표시될 경우 캔버스의 ID가 겹치므로 제대로 표시되지 않을 수 있습니다.

이제 프로세싱 공부도 열심히 하고, 블로그에 자랑도 해보아요~ ㅎㅎ

Share Comments

태극 마크

프로세싱으로 태극 마크를 그려봤습니다.

애국심이 생겨나네요.

void setup() {

  int unit = 150;

  // 3:2
  size(unit * 3, unit * 2);

  noLoop();

  smooth();
}

void draw() {

  noStroke();

  // white
  background(255);

  // center
  translate(width / 2, height / 2);  
  float t = atan2(height, width);
  rotate(t);  
  scale(0.5);

  // north
  fill(255, 0, 0);  
  arc(0, 0, height, height, PI, PI * 2);

  // south
  fill(0, 0, 255);  
  arc(0, 0, height, height, 0, PI);

  scale(0.5);

  pushMatrix();
  translate(-height / 2, 0);  
  fill(255, 0, 0);
  ellipse(0, 0, height, height);    
  popMatrix();

  pushMatrix();
  translate(height / 2, 0);  
  fill(0, 0, 255);
  ellipse(0, 0, height, height);  
  popMatrix();  
}
Share Comments

Notting Hill

영화 홍보를 위해 영국에 방문한 여배우가 평범한 남자를 만나면서 서로 사랑에 빠지는 이야기이다.

남자가 휴 그랜트처럼 멋있어야 여자가 적극적이 된다는 교훈을 남겨준다.

영화 OST인 She 라는 곡이 이 영화의 엔딩을 멋지게 장식해준다.

Share Comments

미인도

조선시대 화원을 배경으로 신윤복의 이루어지지 못한 사랑을 소재로 한 영화이다.

김흥도와 신윤복이라는 역사속 인물을 살아있는 캐릭터로 표현하였다.

개인적인 생각으로는 여배우 김규리의 노출 연기가 너무 많이 나왔다. 작품에서 꼭 필요했는지… 관객을 위해서 였는지…

Share Comments