- This topic has 3개 답변, 3명 참여, and was last updated 7 years, 6 months 전에 by Sangwoo.
-
글쓴이글
-
-
익명비활성
안녕하세요,
첨부한 url의 그림과 같이 뒷면이 보이는 wireframe 3D sphere을 idl로 구현할 수 있을까요?
https://commons.wikimedia.org/wiki/File:Sphere_wireframe_10deg_6r.svg기존 library가 있을까해서 찾아보았는데 3D polyshade로는 안되는 것 같아서 이렇게 도움을 청합니다.
감사합니다.
- 이 게시글은 jhlee에 의해 7 years, 6 months 전에 수정됐습니다.
-
jhleeKeymaster
IDL 도움말의 Graphics > Graphics Gallery > Surface > Global Digital Elevation model 의 내용 및 코드를 참조하여 아래와 같이 수정을 해봤습니다.
PRO TEST_3D
temp = BYTARR(360, 360)
temp = SHIFT(temp, 180)
a = 360L
b = 360L
n = a * b
spherical = MAKE_ARRAY(3, n, /DOUBLE)
FOR i = 0L, a – 1 DO BEGIN
FOR j = 0L, b – 1 DO BEGIN
k = ( i * b ) + j
spherical[0, k] = j * 360.0 / (a – 1)
spherical[1, k] = i * 180.0 / (b – 1) – 90.0
spherical[2, k] = 1.0
ENDFOR
ENDFOR; Convert the spherical coordinates to rectangular coordinates.
rectangular = CV_COORD(FROM_SPHERE = spherical, /TO_RECT, /DEGREES)
z = REFORM( rectangular[2, *], a, b )
x = REFORM( rectangular[0, *], a, b )
y = REFORM( rectangular[1, *], a, b ); Create the image
img = BYTARR(360, 180)+255
lat = indgen(37)*10-90
lon = indgen(37)*10
img[lon, *] = 0
img[*, lat] = 0
; ii = image(img); Display the surface.
s = SURFACE(z, x, y, LOCATION = [0, 0], TEXTURE_IMAGE = img, $
aspect_z=1.0, transparency = 90, axis_style = 0)END
3D로 구현하는 것은 기본적으로 surface 함수를 이용한 것이며,
격자형 프레임은 따로 배열을 만든 후 surface 표현 시 texture_image 키워드를 통해,
뒷면이 보이는 것은 transparency 라는 키워드를 통해 구현하였습니다.
최종 사용 목적이 뭔지는 모르겠는데요, 위 내용에서 조금씩 수정하시어 사용하시면 될 것 같습니다. -
익명비활성
답변 감사합니다^^
감사히 잘 쓰겠습니다. -
Sangwoo회원
약간 다른 방식일 수도 있겠지만, 제 IDL 블로그에 최근에 올린 게시물들의 내용도 참조해보시면 좋을 것 같습니다. 10월 21일 및 24일 2회에에 걸쳐서 올라온 내용을 보시면 됩니다.
-
-
글쓴이글