글
2004.07.05 로켓 날리기

앞에서 만들었던 로켓과 대포알 날리기를 조합해서 로켓이 날아가는 모습으로 만들었습니다.
POV-Ray에서 한번 만든 개체(object)는 그 형태를 계속 유지하면서 회전(rotate), 이동(translate)시킬 수 있기 때문에 시간(clock)에 따라 위치와 로켓을 기울이면서 날아가게 만든 것입니다. 자세한 내용은 소스파일을 참조하시기 바랍니다.
이제 연기만 내 뿜으면서 날리면 제대로 된 로켓의 모습이 나올 것 같군요... 연기를 어떻게 만들어 낼지는 좀 더 연구해 보아야 겠습니다.
[새길]
--------------------------------------------------------------
// 파일이름 : Rocket2.pov
global_settings { assumed_gamma 1.7 }
global_settings { noise_generator 1 }
#include "colors.inc"
#include "textures.inc"
camera {
location <5, 3, -9>
right x*image_width/image_height
look_at <3, 3, 0>
}
light_source {<1500, 2500, -2500> color White}
plane{
<0, 1, 0>, 1
hollow
rotate <0.1, 0, 0>
texture {
pigment { Bright_Blue_Sky
translate <2, 0, 0>
}
finish { ambient 1 diffuse 0 }
}
scale 10000
}
plane{
<0, 1, 0>, 0
texture {
pigment { color rgb <0.90, 0.55, 0.35> }
normal { bumps 0.5 scale 0.025 }
finish { ambient 0.1 diffuse 0.9 }
}
}
fog {
fog_type 2
distance 100
color White
fog_offset 0.1
fog_alt 2.5
turbulence 1.8
}
#declare Engine = union {
cone {
<0, 0, 0>, 0.5, <0, 1.5, 0>, 0.25
scale <1, 1, 0.7>
translate <0, 0.5, 0>
texture { Chrome_Metal }
}
prism { -0.01, 0.01, 4,
<0.0, 0.0>, <0.8, 0.0>, <0.0, 1.5>, <0.0, 0.0>
rotate <-90, 0, 0> translate <0, 0.5, 0>
texture {
pigment { color White }
finish { ambient 0.1 diffuse 0.9 phong 1.0 }
}
}
difference {
cone { <0, 0.10, 0>, 0.28, <0, 0.50, 0>, 0.10 }
cone { <0, 0.09, 0>, 0.17, <0, 0.49, 0>, 0.09 }
translate <0.22, 0, 0>
texture { Chrome_Metal }
}
translate <0.25, 0, 0>
}
#declare Rocket = union {
object { Engine rotate <0, 0, 0> translate <0, 0, 0> }
object { Engine rotate <0, 90, 0> translate <0, 0, 0> }
object { Engine rotate <0, 180, 0> translate <0, 0, 0> }
object { Engine rotate <0, 270, 0> translate <0, 0, 0> }
cylinder {
<0, 0, 0>, <0, 5, 0>, 0.5
translate <0, 0.5, 0>
texture {
pigment { color White }
finish { ambient 0.2 diffuse 0.8 phong 1.0 }
}
}
cylinder { <0, 0, 0>, <0, 0.1, 0>,0.505 translate <0, 2.0, 0>
texture { Chrome_Metal }
}
cylinder { <0, 0, 0>, <0, 0.1, 0>,0.505 translate <0, 3.5, 0>
texture { Chrome_Metal }
}
cylinder { <0, 0, 0>, <0, 0.1, 0>,0.505 translate <0, 5.25, 0>
texture { Chrome_Metal }
}
cone {
<0, 0, 0>, 0.5 <0, 1.5, 0>, 0.25
translate <0, 5+0.5, 0>
texture { Chrome_Metal }
}
sphere {
<0, 0, 0>, 0.25 scale <1, 1.5, 1>
translate <0, 5.00+1.50+0.50, 0>
texture { Chrome_Metal }
}
}
#declare V0 = 10;
#declare G = 1;
#declare TH = 45;
#declare Vx = V0*cos(TH*pi/180);
#declare Vy = V0*sin(TH*pi/180)-G*clock;
#declare RotateAngle = 180/pi*atan2(Vy,Vx);
object { Rocket rotate <90-RotateAngle, 0, 0> translate <0, V0*sin(TH*pi/180)*clock - 0.5*G*clock*clock, V0*cos(TH*pi/180)*clock> }
--------------------------------------------------------------
;파일이름 : rocket2.ini
Antialias=Off
Antialias_Threshold=0.2
Antialias_Depth=3
Input_File_Name=rocket2.pov
Initial_Frame=1
Final_Frame=30
Initial_Clock=0
Final_Clock=13
Cyclic_Animation=on
Pause_when_Done=off
--------------------------------------------------------------
'과학이야기 > 발명-과학기타' 카테고리의 다른 글
2004.10.27 while을 사용한 공 여러개 그리기 (0) | 2004.10.27 |
---|---|
2004.10.27 반짝이는 공 그리기 (0) | 2004.10.27 |
2004.06.25 [POV-Ray] 과녁을 맞춰보자... (2) | 2004.06.25 |
2004.06.25 [POV-Ray] 대포알 날리기 연습 (0) | 2004.06.25 |
2004.06.24 [POV-Ray] 로켓만들기 (1) | 2004.06.24 |