본문 바로가기
Programming/LOGO

컬러링 기초 연습 - 001

by The Programmer 2025. 6. 29.

1. Introduction

 
초보자용 Repeat문과 setFloodColor 컬러링 연습입니다. 대부분 이전 예제에 포함된 내용들입니다만.

FMSLogo에서는 두 개의 함수를 사용해서 색을 칠합니다. 선색 함수와 면색 함수.

1) setPenColor 함수 : 선 색을 결정합니다.
용례 :
setPenColor [ 255 0 0]    ;; 선 색이 RED.
repeat 4 [ fd 100 rt 90 ]

2) setFloodColor 함수 : 면 색을 결정합니다.
용례 :
setFloodColor [ 0 0 255 ]  ;; 면 색이 Blue.
repeat 4 [ fd 100 rt 90 ]
rt 45 pu fd 3 pd FILL pu back 3 pd lt 45

면색을 칠할 때에는 Fill이 포함된다는 점에 주의하세요.

 
 

2. Code

 
to box1
    repeat 4 [ fd 15 rt 90 ]
end

to box16
    repeat 16 [ box1 coloring1 move1 move2 ]
end

to coloring1
    make "R random 255
    make "G random 255
    make "B random 255
    pu rt 45 fd 3 
    setFloodColor (List :R :G :B ) Fill
    bk 3 lt 45
    pd
end

to draw
    repeat 59 [ box16 move3 ]
    HT
end

to main
    setup
    draw
end

to move1
    pu rt 90 fd 15+5 lt 90
    pd
end

to move2
    rt 5.8
end

to move3
    pu lt 120 + 90 fd 120 rt 90 fd 200
    rt 15
    pd
end

to setup
    Home CS PPT PD ST
    pu lt 90 fd 300 rt 90 fd 0
    pd
end

 
 

3. Result

 
....
 

4. Notes


Q. 1. 위 코드 중 실제 색칠을 담당하고 있는 컬러링 함수(coloring1)는 다음과 같습니다.

to coloring1
    make "R random 255
    make "G random 255
    make "B random 255
    pu rt 45 fd 3
    setFloodColor (List :R :G :B ) Fill
    bk 3 lt 45
    pd

end

setFloodColor 명령을 실행하기 전에 PenDown(=PD)이 없습니다. PenUp 상태입니다. 그 상태로 Fill 명령을 적용하면 색이 칠해질까요? 결과에 대한 이유를 생각해보세요.

■ 컬러링 함수의 이해

to coloring1
    make "R random 255
    make "G random 255
    make "B random 255
    pu rt 45 fd 3 
    setFloodColor (List :R :G :B ) Fill
    bk 3 lt 45
    pd
end

1) make "R random 255
R은 변수입니다. random 255는 정수 0부터 255 중에서 하나의 숫자를 컴퓨터가 임의로 골라줍니다. random 255는 실제로 실행될 때까지 어떤 숫자가 선택될지 결과를 미리 알 수는 없습니다.  하지만 지정된 범위 내에서 선택됩니다. 여기서는 0과 255를 모두 포함합니다. make "R random 255는 변수 R에 선택된 숫자 값을 저장합니다.

만약 random 255가 209를 선택했다면,
make "R random 255는
make "R 209와 같습니다.
이 명령은 변수 R에 숫자 209를 저장합니다.

■ LOGO의 리스트와 Python의 리스트
(not yet tested. FMSLOGO)

;; 문자열 변수
make "name "James

;; 정수형 숫자 변수
make "x 209

;; 리스트형 변수, 형태는 문자열 변수와 비슷.
make "hello [Hello James]

■ setFloodColor (List :R :G :B )
(List :R :G :B) 표현은 LOGO 리스트를 만드는 표현입니다. 세 변수 R, G, B를 리스트로 만들라는 뜻입니다. 그럼 의미는 다음과 같아집니다.

setFloodColor [ :R : G :B ]

 ;; 로고에서 리스트는 대괄호를 사용합니다.

setFloodColor 함수는 뒤에 리스트가 옵션으로 반드시 주어져야 합니다.

예를 들면 다음과 같습니다.

setFloodColor [ 0 255 0 ]
;; Green 색으로 칠함.


■ 응용 연습 과제
1) 랜덤 컬러링과 변수 연산의 연결(이전 예제 참고할 것)

2) 채색할 구역이 겹쳐질 때의 Fill 결과는?


■ 응용 연구 과제
1) Alpha 채널을 구현할 수 있는가?

2) Python.Tkinter에서는 .PNG 포맷의 사용이 가능한가? 가능하다면 역시 알파 채널을 구현할 수 있는가?

3) Processing에서의 PNG, SVG 사용 가능 여부와 알파채널의 활용 문제.

4) Julia와 GO 언어는 최근에 이르러 그래픽 처리 영역에서 놀라운 성취를 보여주고 있습니다. Julia.Makie, GO.Fyne.. 등등, 관련 패키지 웹사이틀 참고하세요.

 
 

5. Files

Box12_Ex_003_Coloring_.lgo
0.00MB

 
 

6. Ref.

 
 
Happy Programming!
^.^;