본문 바로가기
파이썬/MANIM

Manim. 원 그리기

by hustler78 2022. 9. 14.
728x90
반응형

이번 글에서는 Manim 라이브러리로 원을 그리는 방법을 알아보겠습니다.

 

Circle 클래스

Circle 클래스의 파라미터로 많이 쓰이는 것들은 아래와 같습니다.

 

  • radius :  반지름
  • color : 원의 색깔
  • fill_opacity : 원 내부의 불투명도로써, 0과 1 사이의 실수

예제를 들어보겠습니다.

 

 

Circle Example

 

예제1. 원 3개 그리기

이 예제는 Manim의 document 중 Circle 파트에 있습니다.

 

class CircleExample(Scene):
    def construct(self):
        circle_1 = Circle(radius=1.0)
        circle_2 = Circle(radius=1.5, color=GREEN)
        circle_3 = Circle(radius=1.0, color=BLUE_B, fill_opacity=1)

        circle_group = Group(circle_1, circle_2, circle_3).arrange(RIGHT, buff=1)

        self.add(circle_group)

 

간단히 살펴보겠습니다.

        circle_1 = Circle(radius=1.0)	# 반지름이 1인 Circle 생성

 


        circle_2 = Circle(radius=1.5, color=GREEN)	# 반지름이 1.5, 색이 GREEN인 Circle 생성

 


        circle_3 = Circle(radius=1.0, color=BLUE_B, fill_opacity=1)	
        # 반지름 1, 색 BLUE, 불투명도가 1 (최고 불투명도)인 Circle 생성

 


        circle_group = Group(circle_1, circle_2, circle_3).arrange(RIGHT, buff=1)
		# 생성된 3개의 Circle을 그룹으로 묶는데, 오른쪽 방향으로 나열되게 그룹화, 원 사이 간격은 1

buff 는 오브젝트들 사이의 간격을 뜻합니다.

 

 


        self.add(circle_group)	#이 Class에 원 3개로 이루어진 그룹을 탑재함

 

 

결과를 보겠습니다. 다음의 명령어를 terminal이나 cmd(명령 프롬프트)에 입력합니다.

manim -pql BasicAnimation.py CircleExample

 

       

Manim으로 그린 다양한 원

 

 

 

예제 2, 원 나타났다가 사라지기

 

이 예제는 slama.dev – Manim – Introduction에 수록된 예제 중 하나를 조금 변형했습니다.

 

class CircleFadeOut(Scene):
    def construct(self):
        # create square and circle objects (and move them)
        circle1 = Circle(color=RED, fill_opacity=1).shift(LEFT * 2)
        circle2 = Circle(color=BLUE).shift(RIGHT * 2)

        # animate writing them on screen
        self.play(Write(circle1), Write(circle2))

        # fading them from the scene
        self.play(FadeOut(circle1), FadeOut(circle2), run_time=2)

 

살펴보겠습니다.

 

        circle1 = Circle(color=RED, fill_opacity=1).shift(LEFT * 2)
        # RED색의 불투명도 100%인 원을 왼쪽(LEFT)방향으로 2만큼 평행이동함
        
        circle2 = Circle(color=BLUE).shift(RIGHT * 2)
        # BLUE 원을 오른쪽(RIGHT)방향으로 2만큼 평행이동 함

LEFT : 왼쪽 방향, 좌표계로 따지면 (-1,0)을 의미합니다.

RIGHT : 오른쪽 방향, 좌표계로 (1,0) 방향을 의미합니다.

shift() : 이동을 의미합니다.

 


        # animate writing them on screen
        # 동영상 화면에 Circle1과 Circle2를 그립니다.
        self.play(Write(circle1), Write(circle2))

play : 애니매이션 실행을 뜻합니다.


        # fading them from the scene
        # Circle1과 Circle2를 점차 Fadeout 시킴.(run time시간 동안)
        self.play(FadeOut(circle1), FadeOut(circle2), run_time=2)

 play : 애니매이션 실행을 뜻합니다.

FadeOut : Circle 오브젝트가 점차 사라지게(Fade Out) 합니다.

run_time : Fade Out 시 걸리는 시간입니다.

 

 

이제

manim -pql BasicAnimation.py CircleFadeOut

를 terminal 창에 입력하여 실행시키면 다음을 얻습니다.

 

 

 

 

 

이제 원 그리기에 좀 자신이 붙는 것 같습니다.

 

 

 

 

728x90
반응형

'파이썬 > MANIM' 카테고리의 다른 글

Manim. 도형 회전 rotate의 비밀  (0) 2022.09.22
Manim. 삼각형 그리기  (0) 2022.09.21
Manim. 정사각형 그리기  (0) 2022.09.16
Manim. 가장 쉬운 예제를 알아보자.  (0) 2022.09.13
MANIM이란? 어떻게 설치하지?  (1) 2022.09.13

댓글