반응형
반응형

회복이란
아픔에서 완전히 벗어나는 게 아니다.
한 걸음 더 나아갈 용기를 얻는 과정이다.
서두르지 않아도 된다. 하지만 절대로
멈추지는 마라. 꾸준히, 끝까지 가보아라.
당신이 어디까지 갈 수 있는지,
스스로에게 보여주어라.


- 프리드리히 니체의 《위버멘쉬》 중에서 -


* 고통을 직시하면
고통은 고통이 아닐 때가 있습니다.
두려워하지 말고 있는 그대로의 고통을 바라볼 때,
비로소 고통의 메시지를 보게 됩니다.
그러면 한 발 더 용기를 내어
앞으로 나아갈 수 있는
자신감이 생깁니다.

반응형

'아침편지' 카테고리의 다른 글

행동을 바꾸려는 사람  (0) 2025.11.19
평범 속의 비범  (0) 2025.11.18
옛사랑  (0) 2025.11.17
잠시 멈추고 가장 좋은 것을 바라보라  (0) 2025.11.14
가슴을 열어야 타인과 연결된다  (0) 2025.11.13
반응형

옛사랑

 

아프고 따뜻하다

 

반응형
반응형

잠시 멈추고 지금 이것을 해보라.
당신이 있는 곳 바로 주변에 이미 있는 것 중에서
가장 보기 좋은 것을 찾으라. 그리고 그것을
바라보면서 한 호흡 명상을 하라. 당신의
느낌에 어떤 변화가 있는지를
알아차리라.


- 마틴 보로슨의 《1분 명상법》 중에서 -


* 지금 이 순간,
할 수 있는 것은 오직 호흡입니다.
숨을 깊이 들이쉬고 내쉬는 그 순간은
온전한 '나'와 마주하는 시간입니다. 한 호흡에
온갖 번잡함에서 벗어나 고요와 평화의 세계로
들어가는 문이 열립니다. 지금, 잠시 멈추고
숨을 느껴보세요. 가장 좋은 것을
바라보십시오.

반응형

'아침편지' 카테고리의 다른 글

한 걸음 더 나가는 용기  (0) 2025.11.17
옛사랑  (0) 2025.11.17
가슴을 열어야 타인과 연결된다  (0) 2025.11.13
가장 사랑하는 사람과의 마지막 식사  (0) 2025.11.12
건강하고 활기찬 삶을 원한다면  (0) 2025.11.11
반응형

랜덤 워크(Random Walk)를 사용하여 **아트적인 노이즈 트레일(Artistic Noise Trail)**을 만드는 것은 제너레이티브 아트(Generative Art)에서 매우 흔하고 흥미로운 기법입니다. 이는 각 단계에서 **무작위성(Stochasticity)**을 이용해 경로를 결정함으로써 예측 불가능하면서도 유기적인 움직임을 만들어냅니다.

 

파이썬에서는 주로 turtle 또는 **matplotlib**을 사용하여 시각화할 수 있지만, 여기서는 제너레이티브 아트에 자주 사용되는 접근 방식인 랜덤 증분을 이용해 구현해 보겠습니다.

 

"""
랜덤 워크(Random Walk)를 사용하여 **아트적인 노이즈 트레일(Artistic Noise Trail)**을 만드는 것은 제너레이티브 아트(Generative Art)에서 매우 흔하고 흥미로운 기법입니다. 이는 각 단계에서 **무작위성(Stochasticity)**을 이용해 경로를 결정함으로써 예측 불가능하면서도 유기적인 움직임을 만들어냅니다.

파이썬에서는 주로 turtle 또는 **matplotlib**을 사용하여 시각화할 수 있지만, 여기서는 제너레이티브 아트에 자주 사용되는 접근 방식인 랜덤 증분을 이용해 구현해 보겠습니다.

"""


import numpy as np
import matplotlib.pyplot as plt

def generate_random_walk_trail(steps, noise_strength=1):
    """
    주어진 단계 수만큼 랜덤 워크 트레일 데이터를 생성합니다.
    
    :param steps: 랜덤 워크를 진행할 단계 수
    :param noise_strength: 노이즈/이동 강도 (클수록 경로가 거칠어짐)
    :return: x, y 좌표 배열
    """
    # 각 단계에서의 x, y 변화량 (랜덤 증분)을 생성합니다.
    # -noise_strength부터 +noise_strength 사이의 균일 분포 난수
    dx = np.random.uniform(-noise_strength, noise_strength, steps)
    dy = np.random.uniform(-noise_strength, noise_strength, steps)

    # 누적합을 계산하여 경로(트레일)를 만듭니다.
    # 각 지점은 이전 지점에서의 변화량을 누적한 결과입니다.
    x_trail = np.cumsum(dx)
    y_trail = np.cumsum(dy)
    
    return x_trail, y_trail

# --- 시각화 설정 ---
STEPS = 5000  # 경로 길이
NOISE_LEVEL = 1.5 # 노이즈 강도 조절

x_coords, y_coords = generate_random_walk_trail(STEPS, NOISE_LEVEL)

# Matplotlib으로 트레일 시각화
fig, ax = plt.subplots(figsize=(10, 10))
ax.plot(x_coords, y_coords, 
        color='white',      # 선 색상
        linewidth=0.5,      # 선 두께
        alpha=0.8)          # 투명도

# 배경 및 축 설정
ax.set_facecolor('black')
ax.set_xticks([])
ax.set_yticks([])
ax.set_title(f"Random Walk Artistic Noise Trail ({STEPS} steps)", color='white')

# 축 비율을 같게 설정하여 왜곡 방지
ax.set_aspect('equal', adjustable='box')

plt.show()

 

 

 

 

import numpy as np
import matplotlib.pyplot as plt

steps = np.random.choice([1, -1], size=(2,1000))
pos = np.cumsum(steps, axis=1)
plt.plot(pos[0], pos[1], color='lime')
plt.axis('off')
plt.title("Random walk path", color='green')
plt.show()

 

반응형
반응형

'나'라는 개인이 겪는
괴로움이 줄어들수록 세상에 존재하는
슬픔과 괴로움에 대한 자각은 더 커진다.
가슴이 열리면서 우리와 세상의 모든 사물이
연결되어 있음을 느낄 수 있다. 평화로운
가슴에 머물 때 우리는 탐욕과 성냄,
어리석음의 괴로움에서 벗어나기
시작하는 스스로를 발견할 수
있을 것이다.


- 신진욱의 《명상 입문》 중에서 -


* 자신만의 고통에 함몰되면
타인의 고통이 잘 보이지 않습니다.
세상의 모든 고통이 자기에게만 닥쳐온 것처럼
여겨져 더욱 고통스럽습니다. 그러다 타인의 어려움과
아픔을 보면 측은함과 연민의 마음이 일어나
나의 아픔을 넘어설 때가 있습니다. 가슴을
열어야 비로소 타인의 고통과
연결될 수 있습니다.

반응형
반응형

turtle 로 전체화면에서 임의로 선그리기 

 

import turtle
import random

# 화면 설정
def setup_screen():
    """창을 설정하고 전체 화면과 유사하게 최대화합니다."""
    screen = turtle.Screen()
    screen.setup(width=1.0, height=1.0) # 화면 크기를 최대화합니다.
    screen.title("무작위 선 그리기 (전체 화면)")
    screen.colormode(255) # RGB 색상 모드를 0-255로 설정합니다.
    screen.bgcolor("black") # 배경색을 검은색으로 설정합니다.
    screen.tracer(0) # 그리기 속도를 높이기 위해 자동 화면 업데이트를 끕니다.
    return screen

# 거북이 설정
def setup_turtle():
    """선을 그릴 거북이를 설정합니다."""
    t = turtle.Turtle()
    t.hideturtle() # 거북이 아이콘을 숨깁니다.
    t.speed(0) # 최고 속도로 설정합니다.
    t.pensize(2) # 펜 두께를 설정합니다.
    return t

# 무작위 색상 생성
def get_random_color():
    """무작위 RGB 색상 튜플을 반환합니다."""
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    return (r, g, b)

# 메인 그리기 루프
def draw_random_lines(t, screen):
    """화면이 종료될 때까지 무작위 선을 계속 그립니다."""
    while True:
        # 무작위 색상 및 위치 설정
        color = get_random_color()
        t.pencolor(color)
        
        # 펜을 든 상태로 무작위 위치로 이동 (현재 위치에서 그리기 시작)
        t.left(random.randint(-180, 180)) # 무작위로 방향을 돌립니다.
        
        # 무작위 길이만큼 앞으로 이동 (선을 그림)
        distance = random.randint(50, 300)
        t.forward(distance)

        # 화면 가장자리를 벗어났는지 확인하고, 벗어났다면 펜을 들고 중앙 근처로 이동
        # 이 과정이 없으면 거북이가 화면 밖으로 나가버려 그림이 멈춘 것처럼 보일 수 있습니다.
        current_x, current_y = t.position()
        screen_width = screen.window_width()
        screen_height = screen.window_height()
        
        if abs(current_x) > screen_width / 2 or abs(current_y) > screen_height / 2:
            t.penup() # 펜 들기
            t.goto(0, 0) # 중앙으로 이동
            t.left(random.randint(-180, 180)) # 방향을 다시 무작위로 설정
            t.pendown() # 펜 내리기
            
        # 화면 업데이트 (tracer(0)를 사용했으므로 수동으로 업데이트)
        screen.update()

# 프로그램 실행
if __name__ == "__main__":
    screen = setup_screen()
    t = setup_turtle()
    
    try:
        draw_random_lines(t, screen)
    except turtle.Terminator:
        # 창 닫기 버튼을 눌렀을 때 발생하는 예외 처리
        print("프로그램이 종료되었습니다.")
    except Exception as e:
        print(f"예외 발생: {e}")
        
    # 창을 닫을 때까지 프로그램이 대기하도록 함 (실제 draw_random_lines 루프에서는 필요 없음)
    # turtle.done()
반응형

+ Recent posts