NaNJAN

새로운 공부!!! C++


어제 제 노트북에 MS에서 다운받은 Visual Studio 2008 Express Edition을 깔았습니다.

이리 저리 뒤지다보니 Herbert Shildt 라는 분이 쓴 C++ A biginner's Guide라는 e-book이 있어서 PDF버전을 다운받아서 출력을 했습니다. 오늘 잠깐 쉬는 동안에 읽어 보고 샘플 프로그램을 짜보고 있습니다.

지금까지C언어나 C++는 거들떠 보지도 않고 살았는데 이제 꼭 필요하겠다는 생각이 들었습니다.

내가 원하는 연구를 진행할 때 남들이 만들어주는 프로그램을 이용하다보면 뭔가가 꼭 부족하다는 느낌이 들 때가 많았습니다. 이번에 진행하는 작업을 하다보니 그런 생각이 들더군요. 웹캠을 개조해서 별 사진을 찍으려고 하는데 기존에 나온 프로그램은 일반인들이 일반적으로 사용할 때를 기준으로 만들어져 있어서 제가 원하는 용도로 사용하기는 곤란하다는 생각이 들었습니다. 그래서 조사를 해보니 많은 사람들이 자신이 원하는 프로그램을 짜서 작업을 하고 있더군요. 샘플코드는 물론 C++이고요.

그런 연유로 거의 10년만에 다시 프로그램을 짜보려고 합니다. 10여년전만 해도 DOS프로그램을 파스칼로 짜서 사용을 했는데 이제는 완전히 윈도시대가 되어서 이 대세를 거스를 수는 없을 것 같습니다. 우선 C++문법이 어떤지나 알고 시작하려고 무려 540쪽에 해당하는 문서를 프린트했습니다. 이제 보기 시작했으니 언제 끝이 날지 모르겠네요. 또 일만 하나 벌려놓는 것이 아닌가 하는 생각이 듭니다.

하나 하나 해보다 보면 뭔가 잡히는 것이 있을 거라는 생각에 또 하나의 일거리를 시작해 봅니다.

[새길]

설정

트랙백

댓글

5SEP

수묵화?



수묵화... 먹의 농담을 조절하며 붓으로 그려내는 멋진 그림이지요.

잘 그린 것 같나요?

사실 수묵화가 아니랍니다. 사진이에요... 풀로 그린 그림입니다.

어제 우리 관내의 과학선생님들과 함께 우리 집에서 주변의 풀을 뜯어 사진을 만들었습니다.

인화지에 풀을 올리고 그냥 빛만 쏘여주었죠. 16초 정도 빛을 쏘여주고 인화, 정착과정을 거쳐 완성된 사진입니다.

원래 사진은 아래에 있습니다. 컴퓨터에서 네거티브 이미지로 바꾸니 멋진 수묵화가 완성되었네요.

멋지죠? 기회가 되시면 한번 해보세요. 재미있습니다...

[새길]





'과학이야기 > 발명-과학기타' 카테고리의 다른 글

A4용 간이 제본기 만들기와 본드 제본  (3) 2009.11.22
새로운 공부!!! C++  (2) 2008.11.28
과학상자 전동포커서(?)  (2) 2006.10.20
흑백필름 현상에 필요한 물건들  (4) 2005.02.04
첫 현상  (3) 2005.02.04

설정

트랙백

댓글

NaNJAN

과학상자 전동포커서(?)

아이들과 만드는 망원경에 장착할 포커서의 구동부분을 만들어봤습니다.포커서를 만드는 작업의 1/3정도가 완성된 듯 합니다.

왼쪽에 보이는 부분이 전동포커서 구동부분이고, 오른쪽에 있는 것이 포커서 전원과 콘트롤러입니다.

과학상자 전동포커서의 모습입니다. 프레임은 라인트레이서 로봇의 몸체를 만드는 프라스틱 프레임을 이용했습니다. 가운데에 과학상자의 전산볼트(M4)를 끼우고봉연결부품(여기서는 너트처럼 사용했습니다)을 끼워서 볼트가 회전할 때 봉연결부품이 이동하도록 했습니다. 봉연결부품이 회전하지 못하도록 양쪽에 스테인레스봉을 끼워 똑바로 가이드가 되도록 만들었습니다.


동력전달부분입니다. 모터는 라인트레이서로봇에서 사용하는 소형 모터를 사용했습니다. 처음에는 기어를 이용해서 동력을 전달하려고 했는데 과학상자와 라인트레이서의 규격이 맞지 않아 고무줄로 동력을 전달하도록 만들었습니다.


포커서 모터가 있는 부분을 밑에서 본 모습입니다.





콘트롤러 부분입니다. 이 콘트롤러는 아이들 장난감으로 쓰는 축구로봇의 콘트롤러를 이용했습니다. 아직 다 완성된 것이 아니고 전진 후진 하는 모습만 보여드릴려고 사진을 찍었습니다. 왼쭉부분이 전진 후진을 담당하는 스위치입니다. 오른쪽 부분의 스위치는 제거하고 그곳에 가변저항을 달아서 포커서의 속력을 조절할 수 있게 할 예정입니다.

앞으로 더 만들어야 할 부분은 다음과 같습니다.

1. 포커서의 속력 조절기 부착

2. 구동부분이 끝에 왔을 때 자동으로 멈추게 하는 방법 구현

위의 두 가지는 이번 주말 동안에 완성하려고 합니다. 여기까지 끝내면 2/3이 끝나게 될 듯 합니다.

3. 접안렌즈를 끼울 수 있는 마운트 만들기

대략 이정도면 모든 작업이 끝나지 않을까 생각됩니다.

아이들 망원경 만드는 작업이 지연이 되어서 다음달로 결과보고서 제출하는 것을 연기했습니다. 다음달 까지는 꼭 망원경을 만들어 내도록 노력하렵니다.

참고로 아래의 동영상은 포커서가 움직이는 모습입니다.

[별 볼 일 있는 세상을 꿈꾸며... 새길]

'과학이야기 > 발명-과학기타' 카테고리의 다른 글

새로운 공부!!! C++  (2) 2008.11.28
수묵화?  (2) 2008.09.05
흑백필름 현상에 필요한 물건들  (4) 2005.02.04
첫 현상  (3) 2005.02.04
2004.10.27 카메라의 look_at에 clock을 넣을 때  (0) 2004.10.27

설정

트랙백

댓글

4FEB

흑백필름 현상에 필요한 물건들

누가 가르쳐 주는 사람 없이 현상 작업을 수행하려니 좀 힘이 들었습니다.

혹시라도 누군가는 또 현상을 해 볼 수 있기에 제가 한 과정을 소개합니다.

먼저 현상에 필요한 물품과 구입처, 구입 가격입니다.

물건 구입 -

현상약품을 비롯한 대부분의 것들은 필름나라에서 구입 (http://www.filmnara.co.kr)했고, 암백은 전에 4*5인치 필름 장착을 위해 대진월드(http://www.photo-mall.co.kr)에서 구입했던 것을 사용했습니다.

현상 약품 :

저는 현상 약품을 세트로 구입했습니다. 구성품은 위의 그림을 참고하세요.구입 가격 : 61,500원

현상탱크 : 조보 1520 UNITANK (35mm 릴 2개 포함) 구입가격 : 32,000원

비커 1L 3개 : 구입가격 9,000원



필름와이퍼 해면 : 구입가격 3,000원

클릭하시면 창이 닫힙니다.

주름약품통 1L 3개 : 18,000원

클릭하시면 창이 닫힙니다.

암백 : 대진월드(http://www.photo-mall.co.kr)에서 구입. 구입가격 : 22,000원

그 외에 필요한 물건으로 온도계, 가위, 병따개, 스포이트, 필름걸이집게등이 필요하더군요. 온도계와 스포이트는 우리학교 과학실에서 가져다 사용을 했고, 가위와 병따개는 하늘이꺼 빌려 썼고, 필름걸이 집게는 문구점에서 파는 더블클립(학교에서 사용하는 것 2개 가지고 왔습니다...^_^)을 사용했습니다.

그리고 사진 찍으려면 필름이 있어야 겠죠? 저의 최종 목적이 별사진 찍는 것이어서 감도가 높은 필름을 구입했습니다. 코닥 T-MAX400필름(24매) 5개, T-MAX P3200(36매) 3개를 구입했습니다. 그중 400필름 하나를 테스트 삼아서 찍어보고 어제 현상을 해 봤습니다.

필름가격까지 포함해서 모두 183,300원이 들었습니다. 그중에서 약품을 제외한 나머지는 모두 계속 쓰는 것이고 약품도 떨어지면 떨어진 약품만 따로 구입을 하면 되니까 처음이 좀 부담이 되지 나중에는 별로 부담이 되지는 않을 듯 합니다.

용품에 대한 이야기는 여기까지 하고 다음에는 현상약품 조제에 대해서 이야기를 하도록 하겠습니다.

[새길]

'과학이야기 > 발명-과학기타' 카테고리의 다른 글

수묵화?  (2) 2008.09.05
과학상자 전동포커서(?)  (2) 2006.10.20
첫 현상  (3) 2005.02.04
2004.10.27 카메라의 look_at에 clock을 넣을 때  (0) 2004.10.27
2004.10.27 카메라를 움직이는 애니메이션  (0) 2004.10.27

설정

트랙백

댓글

4FEB

첫 현상

난생 처음으로 필름 현상을 직접 해 봤습니다.

30분 안에 온다고 해놓고 1시간이 걸려 아내에게 혼나가면서 현상을 마쳤습니다.

첫 현상...

언젠가는 꼭 해보려고 했는데 구상만 하다가 드디어 했습니다.

내가 찍은 필름을 직접 현상한다는 것... 참 재미 있더군요.

어떻게 나올까 궁굼하기도 하고, 혹시 실수라도 하지 않을까 조심해가며 작업을 했습니다.

미리 계획을 했으면서도 좀 실수가 있긴 했는데 제대로 현상이 된 듯 합니다.

우선 사진 몇 장 올리고 내일 현상과정을 올리도록 할께요... 너무 졸립군요...

[검정/하양/그리고... 새길]







설정

트랙백

댓글

NaNJAN

2004.10.27 카메라의 look_at에 clock을 넣을 때

강현숙님을 위한 POV-Ray에 관한 글입니다.

이번에는 카메라의 위치(location)와 향하는 방향(look_at)에 clock을 넣은 경우입니다.


그림에서 보는 것과 같이 카메라가 오른쪽으로 움직이고 동시에 카메라가 향하고 있는 방향도 같이 움직이서 마치 영화 촬영할 때 레일 위에 카메라를 고정시켜놓고 이동시키면서 촬영하는 애니메이션 효과가 나오게 됩니다. 카메라의 세팅 부분에서 location <clock, 0, 0>으로, look_at <clock, 0, 0>으로 만든 것입니다. 앞의 location에만 clock을 넣었을 때와는 다른 형태의 애니메이션이 나오늘 것을 확인할 수 있습니다.

오늘은 여기까지만 하고 카메라는 고정시켜 놓고( location <0, 0, 0> ), 카메라를 바라보는 방향만 바꾸면서(look_at <clock, 0, 0>)애니메이션도 시켜보시기 바랍니다.

------------------------------------

; 파일이름 : sphere5.ini

Antialias=Off

Antialias_Threshold=0.2
Antialias_Depth=3

Input_File_Name=sphere5.pov

Initial_Frame=1
Final_Frame=10
Initial_Clock=0
Final_Clock=1

Cyclic_Animation=on
Pause_when_Done=off

------------------------------------

//파일이름 : sphere5.pov

#include "colors.inc"

global_settings {
assumed_gamma 1.0
max_trace_level 5
}


camera {
location <clock, 3, -5.0>
right x*image_width/image_height
look_at <clock, 0.0, 0.0>
}

sky_sphere {
pigment {
gradient y
color_map {
[0.0 rgb <0.6,0.7,1.0>]
[0.7 rgb <0.0,0.1,0.8>]
}
}
}

light_source {
<0, 0, 0>
color rgb <1, 1, 1>
translate <-30, 30, -30>
}


plane {
y, -1
texture
{
pigment {
checker
color rgb 1
color blue 1
scale 0.5
}
finish{
diffuse 0.8
ambient 0.1
}
}
}

#declare Ball = sphere {
<0, 0, 0>, 0.5
texture {
pigment {
color rgb <0.8,0.8,1.0>
}
finish{
diffuse 0.3
ambient 0.0
specular 0.6
reflection {
0.8
metallic
}
conserve_energy
}
}
}

#declare Step = 1;

#declare X = -5;
#declare EndX = 5;
#while (X <(EndX + Step))
object { Ball translate <X, 0, 0> }
#declare X = X + Step;
#end

설정

트랙백

댓글

NaNJAN

2004.10.27 카메라를 움직이는 애니메이션

강현숙님을 위한 POV-Ray에 관한 글입니다.

공은 그대로 있고 카메라의 위치를 바꾸어 보겠습니다. INI파일의 세팅값은 앞의 것과 동일하지만Input_File_Name의 값을 sphere4.pov로 바꾸어 주시고 랜더링을 하셔야 합니다.

카메라의 세팅부분을 보면 카메라의 위치를 나타내는 location이라는 부분이 있습니다. 이 부분에 clock 값을 추가하는 것입니다. location <clock, 3, -5.0>. 그러면 카메라의 위치가 <0, 0, 0>, <0.1, 0, 0>, <0.2, 0, 0>, ... 와 같은 식으로 카메라의 위치가 변하면서 물체는 가만히 있고 카메라가 회전하는 형태의 애니메이션이 만들어 집니다.


-----------------------------------------

; 파일이름 : sphere4.ini

Antialias=Off

Antialias_Threshold=0.2
Antialias_Depth=3

Input_File_Name=sphere4.pov

Initial_Frame=1
Final_Frame=10
Initial_Clock=0
Final_Clock=1

Cyclic_Animation=on
Pause_when_Done=off

-----------------------------------------

//파일이름 : sphere4.pov

#include "colors.inc"

global_settings {
assumed_gamma 1.0
max_trace_level 5
}


camera {
location <clock, 3, -5.0>
right x*image_width/image_height
look_at <0.0, 0.0, 0.0>
}

sky_sphere {
pigment {
gradient y
color_map {
[0.0 rgb <0.6,0.7,1.0>]
[0.7 rgb <0.0,0.1,0.8>]
}
}
}

light_source {
<0, 0, 0>
color rgb <1, 1, 1>
translate <-30, 30, -30>
}


plane {
y, -1
texture
{
pigment {
checker
color rgb 1
color blue 1
scale 0.5
}
finish{
diffuse 0.8
ambient 0.1
}
}
}

#declare Ball = sphere {
<0, 0, 0>, 0.5
texture {
pigment {
color rgb <0.8,0.8,1.0>
}
finish{
diffuse 0.3
ambient 0.0
specular 0.6
reflection {
0.8
metallic
}
conserve_energy
}
}
}

#declare Step = 1;

#declare X = -5;
#declare EndX = 5;
#while (X <(EndX + Step))
object { Ball translate <X, 0, 0> }
#declare X = X + Step;
#end

설정

트랙백

댓글

NaNJAN

2004.10.27 공의 위치변화 에니메이션

강현숙님을 위한 POV-Ray에 관한 글입니다.

이제 clock을 사용한 애니메이션을 만들어 보겠습니다.


애니메이션을 하기 위해선 POV파일과 함께 INI라는 확장명을 가진 파일을 만들어 주어야 합니다. 먼저 INI파일의 구성을 설명드리겠습니다.

----------------------------------------------

; 파일이름 : sphere3.ini

Antialias=Off

Antialias_Threshold=0.2
Antialias_Depth=3

Input_File_Name=sphere3.pov

Initial_Frame=1
Final_Frame=10
Initial_Clock=0
Final_Clock=1

Cyclic_Animation=on
Pause_when_Done=off

----------------------------------------------

위의 INI파일에서 initial_Frame값과 Final_Frame값이 애니메이션을 시킬 그림의 개수입니다. 위에서는 모두 10장의 그림을 계속해서 그려서 에니메이션을 시키는 것입니다. 그리고 Initial_Clock값과 Final_Clock값은 임으로 정해줄 수 있지만 여기서는 0에서 1까지의 값으로 정했습니다. 즉 모두 10장의 그림을 그리기 때문에 처음 1장의 그림을 그릴 때는 clock값이 0이고, 두번째 그림에서는 0.1, ... 마지막 장에서는 clock값이 1로 변하게 됩니다.

이제 POV파일을 설명 드립니다. 아래의 소스에서 object { Ball translate <X + clock, 0, 0> }라는 부분에 clock이라는 부분을 추가했습니다.주어진 위치 <X, 0, 0>에서 clock값 만큼을 더해주고 while루프를 써서 여러개의 공을 그리는 과정입니다.처음 그림에서는 <X, 0, 0>인 위치에,두 번째 그림에서는 <X + 0.1, 0, 0>인 위치에, ...마지막 10번째 그림에서는 <X+ 1, 0, 0>인 위치에서 그림을 그리는것입니다.

이렇게 두 개의 파일(POV, INI)을 만들고 INI파일을 랜더링 시키면 모두 10장을 그리고 그림을 애니메이션을 시키면 위의 그림처럼 공이 오른쪽으로 이동하는 형태가 나오게 됩니다. 카메라는 고정되어 있는 형태입니다.

다음에는 카메라를 이동시키는 경우를 보도록 하겠습니다.

//파일이름 : sphere3.pov

#include "colors.inc"

global_settings {
assumed_gamma 1.0
max_trace_level 5
}


camera {
location <0.0, 3, -5.0>
right x*image_width/image_height
look_at <0.0, 0.0, 0.0>
}

sky_sphere {
pigment {
gradient y
color_map {
[0.0 rgb <0.6,0.7,1.0>]
[0.7 rgb <0.0,0.1,0.8>]
}
}
}

light_source {
<0, 0, 0>
color rgb <1, 1, 1>
translate <-30, 30, -30>
}


plane {
y, -1
texture
{
pigment {
checker
color rgb 1
color blue 1
scale 0.5
}
finish{
diffuse 0.8
ambient 0.1
}
}
}

#declare Ball = sphere {
<0, 0, 0>, 0.5
texture {
pigment {
color rgb <0.8,0.8,1.0>
}
finish{
diffuse 0.3
ambient 0.0
specular 0.6
reflection {
0.8
metallic
}
conserve_energy
}
}
}

#declare Step = 1;

#declare X = -5;
#declare EndX = 5;
#while (X <(EndX + Step))
object { Ball translate <X + clock, 0, 0> }
#declare X = X + Step;
#end

설정

트랙백

댓글

NaNJAN

2004.10.27 while을 사용한 공 여러개 그리기

강현숙님을 위한 POV-Ray에 관한 글입니다.

while문을 이용해 한 장의 그림에서 여러개의 공을 그리는 모습입니다. while문은 한 장의 그림에 여러개의 모양을 일정한 규칙성을 가지고 반복되게 그리고자 할 때 사용하는 것입니다. while은 절대로 애니메이션을 만들 때 사용하는 기법이 아니라는 점을 생각해 주세요...

그림에서는 x축으로 -5에서 +5까지 1간격으로 반지름이 0.5인 공을 연속으로 그리는 과정입니다. 제일 아래 부분의 while부분을 참고하세요.


//파이이름 : sphere2.pov

#include "colors.inc"

global_settings {
assumed_gamma 1.0
max_trace_level 5
}


camera {
location <0.0, 3, -5.0>
right x*image_width/image_height
look_at <0.0, 0.0, 0.0>
}

sky_sphere {
pigment {
gradient y
color_map {
[0.0 rgb <0.6,0.7,1.0>]
[0.7 rgb <0.0,0.1,0.8>]
}
}
}

light_source {
<0, 0, 0>
color rgb <1, 1, 1>
translate <-30, 30, -30>
}


plane {
y, -1
texture
{
pigment {
checker
color rgb 1
color blue 1
scale 0.5
}
finish{
diffuse 0.8
ambient 0.1
}
}
}

#declare Ball = sphere {
<0, 0, 0>, 0.5
texture {
pigment {
color rgb <0.8,0.8,1.0>
}
finish{
diffuse 0.3
ambient 0.0
specular 0.6
reflection {
0.8
metallic
}
conserve_energy
}
}
}

#declare Step = 1;

#declare X = -5;
#declare EndX = 5;
#while (X <(EndX + Step))
object { Ball translate <X, 0, 0> }
#declare X = X + Step;
#end

설정

트랙백

댓글

NaNJAN

2004.10.27 반짝이는 공 그리기

방명록에 강현숙님이 POV-Ray에 대한 질문을 하셔서 그 질문에 답변하기 위해서 씁니다.

먼저 준비작업으로 체크모양의 바닥에 반짝이는 공을 1개 올려놓겠습니다. 공은<0, 0, 0>인 위치에 놓고,크기는 반지름이 0.5짜리의 공을 그렸습니다.


// 파일이름 : sphere.pov

#include "colors.inc"

global_settings {
assumed_gamma 1.0
max_trace_level 5
}


camera {
location <0.0, 3, -5.0>
right x*image_width/image_height
look_at <0.0, 0.0, 0.0>
}

sky_sphere {
pigment {
gradient y
color_map {
[0.0 rgb <0.6,0.7,1.0>]
[0.7 rgb <0.0,0.1,0.8>]
}
}
}

light_source {
<0, 0, 0>
color rgb <1, 1, 1>
translate <-30, 30, -30>
}


plane {
y, -1
texture
{
pigment {
checker
color rgb 1
color blue 1
scale 0.5
}
finish{
diffuse 0.8
ambient 0.1
}
}
}

#declare Ball = sphere {
<0, 0, 0>, 0.5
texture {
pigment {
color rgb <0.8,0.8,1.0>
}
finish{
diffuse 0.3
ambient 0.0
specular 0.6
reflection {
0.8
metallic
}
conserve_energy
}
}
}

object { Ball }

설정

트랙백

댓글