본문 바로가기

전체 글

VPython 예제6 - 단진자의 운동 애니메이션 1 문제 위의 조건을 바탕으로 단진자의 운동을 애니메이션화하는 코드를 작성하시오. 이 때, 단진자의 x방향 운동속도를 화살표로 나타내시오. 2 코드 from vpython import * # 7.6.2 from math import * #------------------------------------------------------------------ # 그래픽 그려주는 코드 #------------------------------------------------------------------ # 그래픽창을 설정하는 코드 scene.center = vector(0,-1,0) scene.width = 400 scene.height = 700 # 단진자와 이를 받쳐주는 바닥과 봉, 단진자의 실을 생성합.. 더보기
VPython 예제5 - 3자유도 스프링-질량계 애니메이션 1 문제 위의 조건을 바탕으로 3자유도 스프링-질량계의 움직임을 애니메이션화하는 코드를 작성하시오. 단, 마찰력은 무시한다. 2 코드 # code from https://youtu.be/oMBohUQz3NI from vpython import * # 7.6.2 from math import * #------------------------------------------------------------------ # 그래픽 그려주는 코드 #------------------------------------------------------------------ # 그래픽창을 생성합니다 scene = canvas(width=800, height=300, center=vector(0,0,0)) # 3개의 물체를.. 더보기
VPython 예제4 - 진자의 등속원운동 애니메이션 1 문제 위의 조건을 바탕으로 등속원운동을 하는 물체의 애니메이션 코드를 작성하고 공의 x좌표를 x-t 그래프로 나타내는 코드를 작성하시오 2 코드 # code from http://tcjd71.wixsite.com/vpython/blank-1 from vpython import * # 7.6.2 #------------------------------------------------------------------ # 그래픽 그려주는 코드 #------------------------------------------------------------------ # 그래픽창과 그래프창을 생성합니다 scene = canvas(width=600, height=600, fov = 0.01*pi) gd = gra.. 더보기
VPython 예제3 - 1자유도 스프링-질량계 애니메이션(2) 1 문제 위의 조건을 바탕으로 1자유도 스프링-질량계(1DOF spring-mass system)와 운동에너지, 탄성에너지, 역학적에너지를 애니메이션화하는 코드를 작성하시오. 단, 마찰력은 무시한다. 2 코드 # code from https://youtu.be/UoN70GjnBTI from vpython import * # 7.6.2 #------------------------------------------------------------------ # 그래픽 그려주는 코드 #------------------------------------------------------------------ m = 0.5 # 질량 k = 20.0 # 강성 v0 = 4.0 # 초기속도 # 마찰력을 고려할 때 사용하는.. 더보기
VPython 예제2 - 공의 자유낙하 애니메이션 (free-fall) 1 문제 위의 조건을 바탕으로 공이 27m 높이에서 자유낙하하는 애니메이션 코드를 작성하시오. 공의 질량은 무시하며 바닥과 공은 완성탄성충돌을 한다. 2 코드 # code from https://youtu.be/H8CzQtx9vds from vpython import * # 7.6.2 from math import * # 공과 바닥을 생성합니다. 공의 위치는 지면으로부터 18 + 9 = 27m 위에 있습니다. (vpython은 y축이 위아래방향입니다) ball = sphere(pos=vector(-5,18,0), radius=1, color=color.green) bottom = box(pos=vector(0,-9,0), size=vector(25,0.5,25)) # 초기속도는 x방향으로 0.7 m/s .. 더보기
VPython 예제1 - 1자유도 스프링-질량계 애니메이션 1 문제 위의 조건을 바탕으로 1자유도계 스프링-질량계(1DOF spring-mass system)을 애니메이션화하는 코드를 작성하시오 2 코드 # code from https://www.youtube.com/watch?v=c3tX_qReGIM from vpython import * # 7.6.2 g = 9.81 # 중력가속도 9.81 m/s^2 # 화면 객체를 생성합니다. backgroun 색과 카메라 center 포인트를 설정한다 scene = canvas(background = vector(0.36, 0.47, 0.23), center = vector(0, -0.7, -0.5)) # 천장의 물체를 생성합니다. 재질은 wood이고 색깔은 orange입니다. ceiling = box(length = 1.. 더보기
Git 사용법 및 다양한 옵션 설명 1 Introduction 본 포스트에서는 Git의 사용법 및 다양한 옵션들에 대해 설명한다. Git은 코드의 추가/변경/삭제 내역을 추적을 위해 널리 사용되는 버전관리 프로그램이다. 본 포스트에서 설명하는 모든 내용은 우분투 18.04 LTS 버전에서 정상적으로 작동하였다. 2 Environment setup Ubuntu 18.04 LTS 환경에서 git는 다음 명령어를 통해 간단하게 설치할 수 있다. $ sudo apt install git 처음 git을 설치하였다면 commit을 수행했을 때 입력할 작성자의 이름 및 이메일 주소를 설정해야한다. 아래 명령을 터미널에 입력한다. $ git config --global user.email "your email" $ git config --global u.. 더보기
Docker 사용법 및 다양한 옵션 설명 1 Introduction 본 포스트에서는 Docker의 사용법 및 다양한 옵션들에 대해 설명한다. Docker는 컨테이너라는 가상의 이미지를 생성하여 호스트 컴퓨터와 리소스는 공유하지만 별도의 독립적인 프로그램을 돌릴 수 있는 가상화 프로그램이다. 리눅스를 사용하면서 버전 문제로 인해 빌드에 실패해 본 경험이 있는 사용자들에게 Docker를 추천한다. 본 포스트에서 설명하는 모든 내용은 우분투 18.04 LTS 버전에서 정상적으로 작동하였으며 사용한 docker의 버전은 19.03.06 버전이다. 2 Environment setup Ubuntu 18.04 LTS 환경에서 docker는 다음 명령어를 통해 간단하게 설치할 수 있다. $ sudo apt install docker* 2.1 Use docke.. 더보기
gdb 디버거 사용법 및 다양한 기능 설명 1 Introduction 본 포스트에서는 리눅스에서 사용하는 C/C++ 전용 디버거 gdb의 사용법 및 다양한 기능에 대해 설명한다. gdb에는 다양한 기능들이 많지만 본 포스트에서는 간단한 코드 디버깅에 초점을 맞춰서 필자가 주로 사용하는 옵션들에 대해서만 설명한다. 포스트에서 설명하는 모든 내용들은 우분투 18.04 LTS 환경에서 테스트하였다. gdb는 대부분의 경우 우분투에 미리 설치되어 있겠지만 만약 설치되어 있지 않은 경우 아래 명령어를 통해 설치한다. $ sudo apt install gdb 2 Debug with cmake gdb로 디버깅을 수행하기 위해서는 컴파일 당시 디버깅과 관련된 옵션을 설정해줘야 한다. 디버깅 옵션없이 컴파일하는 경우 디버깅 심볼들이 바이너리 파일에 저장되지 않으.. 더보기
tmux 다중터미널 프로그램 사용법 설명 및 환경설정 1 Introduction 본 포스트에서는 리눅스의 다중터미널 프로그램 tmux의 사용법에 대해 설명한다. 포스트에서 설명하는 모든 내용들은 우분투 18.04 LTS 환경에서 테스트하였다. 필자가 생각하는 tmux의 장점은 다음과 같다. 한 프로그램에 여러 개의 터미널을 동시에 띄워놓은 상태로 빠르게 네비게이션하면서 코딩이 가능하다 터미널 작업 도중 detatch하면 백그라운드에서 계속 프로그램이 실행되고 있기 때문에 내가 했던 작업 환경을 나중에 원할 때 attatch해서 그대로 사용할 수 있다 원격에서 리눅스로 ssh 접속을 한 상태로 작업을 할 때, tmux를 사용하면 접속이 끊어지더라도 백그라운드에서 원하는 작업을 계속 실행할 수 있다 원격에서 작업한 tmux 세션을 로컬에서도 접속할 수 있고 반.. 더보기
Emacs 에디터 사용법 설명 및 C++/Python 개발환경설정 1 Introduction 본 포스트에서는 리눅스에서 emacs 에디터를 통해 C++/Python 개발환경을 구축하는 방법에 대하여 설명한다. emacs는 40년이 넘는 오랜 역사를 가지고 있는 에디터이므로 매우 다양한 코드 네비게이션 방법들이 존재하지만 본 포스트에서는 lsp-mode 를 사용하여 코드 네비게이션하는 방법에 대해 설명한다. emacs는 매우 복잡하고 많은 키바인딩으로 유명하다. 이러한 복잡한 키바인딩을 단순화시켜서 편하게 사용하기 위해 필자는 evil 모드를 설치하여 vim 키바인딩을 사용하였으며 대부분의 키바인딩을 Space 키 기반으로 변경하여 손에 부담이 덜 가도록 설정하였다. spacemacs 같이 이미 많은 사람들이 사용하는 Space 키 기반의 emacs가 존재하지만 use-.. 더보기
Vim 에디터 사용법 설명 및 C++/Python 개발환경설정 1. Introduction본 포스트에서는 리눅스에서 vim 에디터를 통해 c++ 또는 python 개발환경을 구축하는 방법에 대하여 설명한다. 본 포스트에서 vim의 코드 네비게이션 플러그인은 youcompleteme 과 vim-lsp 를 사용하였는데 youcompleteme 의 경우 2016년에 등장한 vim-lsp 이전까지는 vim에서 독보적으로 강력한 코드 네비게이션 플러그인이었으나 다양한 프로그래밍 언어를 지원하는 vim-lsp 가 등장하면서 현재는 둘 다 많이 사용하고 있는 상황이 되었다.포스트를 작성하는 시점(2020.09)을 기준으로 youcompleteme 플러그인은 설치하는 과정은 간단하지만 실제로 사용할 때 약간의 세팅이 복잡한 반면, vim-lsp 플러그인은 vim, clang 버전.. 더보기
cmake 사용법 및 다양한 옵션 정리 1 소개 본 포스트에서는 cmake의 사용법 및 다양한 옵션들에 대해 설명한다. cmake는 리눅스, 윈도우, 맥 등 운영체제에 관계없이 하나의 코드만으로 실행 파일을 생성해주는 크로스 컴파일러 프로그램이다. 본 포스트에서는 리눅스 터미널에서 cmake를 사용하는 방법에 한정하여 설명한다. 포스트에서 설명하는 모든 내용들은 우분투 18.04 LTS 환경에서 테스트하였다. 2 환경 설정 터미널에서 아래 명령어를 입력하여 cmake를 설치한다 # Install cmake. $ sudo apt install cmake # Check cmake is installed successfully. $ cmake --help 3 CMakeLists.txt 사용법 해당 섹션에서는 cmake의 명령어와 변수의 의미에 대해.. 더보기
Problem Solving C++ 1 Introduction 본 포스트에서는 알고리즘 문제 풀이에 관련된 내용을 포스팅한다. 대부분의 문제들은 백준에서 풀었으며 검색창에 boj.kr/{#} 를 입력하여 검색할 수 있다. 이 때, # 부문에 문제 번호를 입력하면 된다. ex) boj.kr/2751 코드에서 사용한 #include 헤더는 모든 표준헤더를 포함하는 헤더로써 필자가 테스트한 Ubuntu 18.04 환경에서 정상적으로 컴파일되었다. ios_base::sync_with_stdio(false); cin.tie(0); 위 코드는 시간초과 구문을 피하기 위해 C++의 출력속도를 높이는 코드이다. 또한 속도를 높이기 위해 std::endl 대신 '\n' 를 통해 새 라인을 추가한다. 2 Basic 2.1 2751 수 정렬하기2 #inclu.. 더보기
[Curated] SLAM 연구 및 논문 자료정리 (~20) 1 Introduction 본 포스트는 2018년부터 포스트를 작성하는 시점(2020.09)까지 SLAM을 공부하면서 정리했던 자료들 리스트입니다. SLAM을 입문하는 분이나 연구하는 분이 논문이나 코드를 볼 때 참고하면 좋을 것으로 판단됩니다. 새로운 자료 정리가 업데이트되는대로 해당 포스트를 업데이트하려고 합니다. 2. My SLAM-related list 2.1 SLAM prerequisite (2019) 3D Rigid Body Transformation 개념 리뷰 (2019) Pose Graph-based SLAM + Bundle Adjustment 개념 리뷰 (2019) Visual SLAM, Indirect vs Direct method 개념 비교 2.2 SLAM lecture review .. 더보기