SMALL

분류 전체보기 772

궤적 상의 입자 운동 구현 및 애니메이션

오늘은 2차원 공간에 존재하는 궤적이 있고 그 위에서 움직이는 입자가 있는 상황을 가정하여 이를 그래픽적으로 도식화하고 그 움직임을 담은 애니메이션 파일을 만들어보는 예제를 소개하고자 합니다. 먼저 궤적을 구성하는 점들의 좌표 데이터를 생성하는 작업부터 진행합니다. 그 과정은 다음과 같이 정의해봅니다. n = 400 t = [0:2*!pi:2*!pi/n] r = 0.5+COS(t) x = r*COS(t) y = r*SIN(t) HELP, x, y 여기서는 총 401개의 X축 및 Y축 좌표값들로 구성된 배열 x 및 y를 정의하였습니다. 이러한 점들로 구성된 궤적을 그림으로 표출하기 위하여 다음과 같은 과정을 추가로 실행합니다. sx = 600 sy = 600 win = WINDOW(DIMENSIONS=[s..

IDL/New Graphics 2026.03.13

데이터 포인트들을 다양한 색상으로 표출하기 [3]

2차원 공간상에 흩어져있는 다수의 데이터 포인트들 다양한 색상으로 표출하는 방법에 관한 게시물들(링크 1, 링크 2)을 올렸던 적이 있습니다. 그래서 이러한 방식의 구현을 위하여 SCATTERPLOT 및 BUBBLEPLOT 함수를 사용하는 방법 및 예제들을 다양하게 소개한 바 있는데요. 오늘은 이러한 연장선상에 있는 또 다른 예제들을 소개해보고자 합니다. 먼저 예제 데이터를 생성하는 과정부터 시작하면 다음과 같습니다. n = 100 x1 = RANDOMU(-1, n)*100 y1 = RANDOMU(-2, n)*100 x2 = RANDOMU(-3, n)*100 y2 = RANDOMU(-4, n)*100 x3 = RANDOMU(-5, n)*100 y3 = RANDOMU(-6, n)*100 여기서는 2차원 공..

IDL/New Graphics 2026.03.06

배열간 연산과 반복형 구문에 의한 연산 사이의 비교 [2]

지난 회차 게시물에서는 배열들을 사용하여 연산 결과를 얻는 방식에 있어서 배열간 연산과 반복형 구문에 의한 연산이라는 두가지 방식에 대하여 살펴보고 서로 비교해보았습니다. 특히 대용량 데이터를 다루게 될 경우에는 두 방식의 소요 시간이 서로 상당히 큰 차이를 보인다는 것도 함께 확인한 바 있습니다. 그러면 이번 회차에는 이러한 차이를 가늠할 수 있는 다른 예제를 살펴보기로 하겠습니다. 이번 예제에서는 반복형 구문 내에서 IF와 같은 조건형 구문이 사용되는 경우입니다. 예제를 보면 다음과 같습니다. n = 10000000 a = RANDOMU(-1, n)*100 b = RANDOMU(-2, n)*100 c = RANDOMU(-3, n)*100 TIC r = FLTARR(n) FOR j = 0, n-1 DO..

IDL/Programming 2026.02.26

배열간 연산과 반복형 구문에 의한 연산 사이의 비교 [1]

우리가 IDL에서 대용량 데이터를 처리하는데 있어서는 배열로 정의된 데이터를 다루는 것이 일반적입니다. 즉 대용량의 데이터를 배열에 담고 이러한 배열에 대하여 필요한 연산을 수행하는 방식입니다. 이러한 작업에 있어서는 반복형 구문을 사용하는 연산을 수행하는 경우도 있고 그냥 배열끼리의 연산으로 처리하는 경우도 있습니다. 통상적으로는 배열끼리의 연산으로 처리하는 경우가 많지만 작업의 특성에 따라서는 반복형 구문을 사용하는 연산을 하게 되는 경우도 있습니다. 오늘은 이러한 두가지 연산 방식을 서로 비교해보고 그 차이점도 확인해보고자 합니다. 이를 위하여 간단한 예제를 다음과 같이 작성해봅시다. n = 10a = RANDOMU(-1, n)*100 b = RANDOMU(-2, n)*100 c = RANDOMU(..

IDL/Programming 2026.02.23

TIC, TOC 명령을 활용한 시간 측정 방법

오늘은 IDL에서 특정한 프로세스가 돌아가는데 걸리는 시간을 측정할 때 사용하는 TIC, TOC 명령들에 관하여 간략히 살펴볼까 합니다. 사실 TIC, TOC 명령들은 제가 이 블로그에서 올린 몇몇 게시물들에서도 이미 여러번 사용한 바 있습니다. 사용 방법은 매우 간단하며 마치 스톱워치처럼 사용하면 됩니다. 즉 TIC 명령을 실행하면 시간 측정이 시작되고 TOC 명령을 실행하면 시간 측정이 멈추면서 그때까지 경과한 시간을 초 단위로 표시해줍니다. 먼저 다음과 같이 IDL의 명령 프롬프트에서 간단히 시도해봅시다. IDL> TIC IDL> TOC % Time elapsed: 3.4210000 seconds. 이와 같이 TIC 명령을 실행하고 어느 정도 이후에 TOC 명령을 실행하면 경과 시간 즉 TIC 명령..

IDL/Miscellaneous 2026.02.12

이미지(Image)에 대한 광원 효과 적용 [2]

지난 회차 게시물에서는 2차원 데이터를 이미지의 형태로 표출하면서 화소값의 높낮이에 따른 명암 및 그림자 효과를 구현하기 위하여 IDL의 OG(Object Graphics) 체계 기반으로 2차원 데이터를 서피스(Surface) 객체로 구현하고 여기에 광원(Light Source) 객체를 추가하여 이용하는 예제를 살펴본 바 있습니다. 일단 지난 회차에서 작업했던 내용을 그대로 가져와서 계속 작업을 이어나가기로 하겠습니다. 그 내용은 다음과 같습니다. dd = 0.02x = [-5:5:dd]#MAKE_ARRAY(10/dd+1, VALUE=1)y = [-5:5:dd]##MAKE_ARRAY(10/dd+1, VALUE=1)z = 5*((x^2+y^2)^0.3+SIN((x^2+y^2)*0.5))HELP, zPRIN..

IDL/Object Graphics 2026.02.05

이미지(Image)에 대한 광원 효과 적용 [1]

2차원 데이터를 이미지(Image)의 형태로 표출하면서 광원(Light Source)을 추가적으로 사용하여 명암 및 그림자 효과를 연출하는 것이 필요할 경우가 있습니다. 예를 들면 고도(Elevation) 값들로 구성된 지형 데이터를 이미지로 표출한 다음 태양의 위치에 따른 그림자의 변화를 보고 싶은 경우를 가정해볼 수 있습니다. 이러한 방식의 연출이 IDL에서 가능할까요? 물론 가능합니다. 다만 이를 위해서는 2차원 데이터를 이미지(Image) 대신 서피스(Surface)의 형태로 표출해야 합니다. 그런 다음에는 광원(Light Source)을 별도로 추가하여 그 위치에 따라 그림자가 형성되도록 해야 합니다. 서피스(Surface)는 X, Y, Z 성분이 모두 존재하는 3차원적인 표출 방식이므로 광원의..

IDL/Object Graphics 2026.01.28

감마 보정 (Gamma Correction) [2]

지난 회차 게시물에서는 IDL에서 이미지 데이터에 대하여 감마 보정(Gamma Correction) 기법을 적용하는 방법과 예제를 소개한 바 있습니다. 오늘은 앞서 소개되었던 방법을 그대로 응용하여 감마 보정 기법을 다른 예제 이미지 데이터에 적용해보기로 하겠습니다. 예제로 사용할 이미지 파일은 다음과 같습니다. 이 파일로부터 이미지 데이터를 읽고 감마 보정을 해보기로 합니다. 일단 이미지 데이터를 읽는 작업부터 다음과 같이 시작합니다. READ_JPEG, 'my_photo1.jpg', data, /GRAYSCALEHELP, data 사실 원본 이미지는 컬러이긴 하지만 여기서는 처리 작업의 편의를 위하여 READ_JPEG 명령을 GRAYSCALE 키워드와 함께 사용하여 RGB가 아닌 단색광 이미지 데이..

감마 보정(Gamma Correction) [1]

감마 보정(Gamma Correction)은 이미지 처리 분야에서 널리 사용되고 있는 기법으로서 비선형적인 전달 함수(Nonlinear Transfer Function)를 사용하여 신호의 강도를 변형시키는 작업을 의미합니다. 이 기법에서 사용되는 비선형 전달 함수의 형태는 다음과 같습니다. 이 식에서 지수 형태로 들어가는 gamma 값이 가장 핵심적인 역할을 합니다. f(x) = gain*x^gamma+offset 물론 IDL에서도 이러한 기법을 사용하는 것이 가능합니다. 어떻게 보면 여기서 예전에 소개되었던 클리핑(Clipping) 기법 또는 히스토그램 균일화(Histogram Equalization) 기법과 유사한 맥락일 수도 있지만, 감마 보정 기법의 경우는 전달 함수의 형태를 다양하게 변형시켜서 ..

막대 차트(Bar Chart) 표출하기

막대 차트(Bar Chart)는 막대 모양의 그래프를 표출하면서 막대 내에서 값에 따라 마디마디가 구분되어 보이도록 하는 표출 방식을 의미합니다. 이해를 돕기 위하여 예제 그림만 먼저 본다면 다음과 같습니다. 이 그림에서는 어떤 설문 조사를 6개의 집단들을 대상으로 실시하고 각 카테고리별 응답 비율을 막대 차트의 형태로 표시하고 있습니다. 오늘은 이러한 막대 차트(Bar Chart) 그림을 IDL에서 표출하는 방법을 소개해보고자 합니다. 위의 그림은 당연히 IDL로 표출한 것이며 그 과정을 지금부터 살펴보겠습니다. 먼저 예제 데이터부터 정의해봅시다. 그 과정은 다음과 같습니다. cats = ['very bad', 'bad', 'not bad', 'good', 'very good'] colors = ['..

IDL/New Graphics 2025.12.09
728x90