Coder Social home page Coder Social logo

pyrocksim's Introduction

PyRockSim

Rocket Simulater wrtie Python.

이 프로젝트는 기본적으로 로켓 시뮬레이터를 기반으로 학습한 내용을 작성한 것이다. 파이썬의 함수와 클래스를 가볍게 다루지만, 자세한 설명은 하지 않으니 참고하기 바란다.

로케싀 제원에 대한 설정에 기초하여 로켓을 날리고, 일정 시간이 지난 후 고도와 속도, 그리고 그때가지의 비행 궤적을 계산하는 것을 목적으로 한다. 이 프로젝트는 언어의 기능을 충분히 활용하여 중요한 기능을 전저 구현한 프로토타입을 빠른 시간 안에 구축하는 빠른 프로토타이핑(Rapid Prototyping)의 한 예이다.

이 프로젝트의 목표는 개발 기법의 큰 그림을 파악하는 것이다.

기능의 구성

PyRockSim은 주어진 초기 조건에 따라 로켓의 추진체가 내는 추력을 계산하고, 고도에 따라 변화하는 중력가속도 및 대기의 영향, 그리고 공기역학 계산에 따라 저항과 양력을 계산한다. 이들 값을 기초로 로켓의 위치, 속도, 자세각을 순차적으로 업데이트하면서 지정한 시간까지 시뮬레이션을 계속한다. 본래 프로그램은 6자유도(회전 3축 + 이동 3축) 시뮬레이터로의 확장을 전제로 하고 있지만, 지금 소개하는 프로그램은 이동 3축에 해당하는 3자유도를 갖는다.

프로그램을 구축하는 절차

PyRockSim을 구축하는 데 필요한 절차를 열거하면 다음과 같다.

  • 기능 분할(함수나 클래스 단위로 기능을 정리)

  • 파일 분할(각 기능 분야별로 파일을 나눔)

  • 프로그램 작성

  • 정적 코드 분석

  • 단위 테스트

  • 디버깅

  • 프로그램 최적화

우선 프로그램에 필요한 기능을 골라내고, 이 기능을 다시 적절히 분할하여 함수나 클래스로 정리해야 한다. 또, 특정한 분야의 기능을 담당하는 함수 및 클래스를 같은 파일에 모아두면 유지보수성이 향상되므로 여러 개의 파일로 프로그램을 분할하도록 한다.

그리고 파이썬에서는 파일 하나로 구성된 라이브러리를 **모듈(module)**, 파일 여러 개로 구성된 라이브러리를 **패키지(package)**라고 한다. 특정한 분야의 기능을 모듈이나 패키지로 정리해두면 다른 프로그램에서 이를 빌려 쓸 수 있으므로 편리하다.  

그 다음에는 실제 코딩을 진행한 후 작성된 프로그램이 올바르게 작성됐는지 확인하기 위해 정적 코드 분석, 단위 테스트를 실시한다. 그러고 마녀 의도하지 않은 동작을 수정하기 위한 디버깅, 신뢰성 향상 및 빠른 처리 속도를 위해 프로그램 최적화를 수행한다.

이와 같은 과정을 모두 기록하는 것은 어려우니 프로젝트의 commit massage 혹은 완성된 code를 통해 이해하기 바란다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.