데모보기 ·보고 버그 · 요청 기능

이것은 행성 상호 작용을 시뮬레이션하는 파이썬 프로그램입니다
그것은 당신이 행성 질량과 초기 위치 및 속도에 들어갈 수 있음을 의미하며, 우리의 프로그램은 멋진 시뮬레이션에서 각각의 사람들과 어떻게 상호 작용할 것인지 보여줍니다.
우리의 프로그램은 예상 시나리오를 보여줄 것이지만 100% 정확하지 않을 수 있습니다.
기성품 데모가 많이 있습니다.
앱으로 할 수있는 몇 가지 사항 :
개발 기계에 다음과 같은 전제 조건을 모두 설치했는지 확인하십시오.
pip --version
먼저 프로젝트를 다운로드하려는 장소에서 CMD를 열면이 명령을 작성하십시오.
리포지토리를 로컬 컴퓨터로 복제하십시오.
git clone https://github.com/suliman-99/Space-Simulation.git
프로젝트 디렉토리로 이동하십시오.
cd Space-Simulation
그런 다음 PIP로 PIPENV 모듈을 설치하려면 CMD 에이 명령을 작성하십시오.
pip install pipenv
PIPENV를 사용하여 필요한 종속성을 설치하십시오.
pipenv install
프로젝트 실행 :
Windows :
python main.py
Linux 또는 Mac :
python3 main.py
첫 번째 단계는 이전 섹션 설치를 통해 프로그램을 실행하는 것입니다.
앱은 견인 버튼으로 열립니다 : Create new Simulation 시뮬레이션을 클릭하여 새 시뮬레이션을 만들거나 Simulation From File 선택하여 기성품 데모를 열거 나 저장된 데모 또는 상태를여십시오.
그런 다음 Run Simulation 클릭하여 시뮬레이션을 시작하십시오
기본 브라우저가 시뮬레이션 페이지와 함께 열립니다
Save State 버튼을 클릭하여 현재 상태를 저장할 수 있으며 demos/saved_state.txt 파일에 저장되며 거기에서 다시 사용할 수 있습니다.
새로운 데모를 시도하고 싶다면 프로그램을 닫고 다시 열어야한다고해서 죄송합니다.
뉴턴의 보편적 중력의 법칙
F = (G * m1 * m2) / r^2
G : 중력 상수
m1 , m2 :이 두 개체의 질량
r : 대중의 중심 사이의 거리
F : 그들 사이에서 작용하는 중력력
우리는이 공식을 사용하여 각 행성 쌍 사이의 힘을 계산합니다.
이 방법으로 비행기의 총 힘을 업데이트합니다.
def apply_gravity(planet1: Planet, planet2: Planet) -> None:
u = planet2.pos - planet1.pos
grav = g * planet1.mass * planet2.mass / (u.length() ** 2)
planet1.add_force(u.scale_to(grav))
planet2.add_force(u.scale_to(-grav))
뉴턴의 두 번째 운동 법칙
F = m * a => a = F / m
m : 물체의 질량
F : 총 힘이 적용되었습니다
a : 가속도
우리는이 fomula를 사용하여 적용되는 총 힘에 따라 각 행성의 가속도를 계산합니다.
그 후 현재 속도와 가속도에 따라 새로운 속도 (속도 벡터)를 계산할 수 있습니다.
그 후 현재 위치와 속도에 따라 새로운 위치 (x, y, z)를 계산할 수 있습니다.
그런 다음 새로운 장소에서 개체를 다시 렌더링 할 수 있습니다.
우리는 같은 두 번째로 많은 시간을 할 수 있으며 (10 시간 더) 좋은 시각화를 가질 것입니다.
이 방법으로 Palnet 데이터를 업데이트합니다.
def update(self, dt: float) -> None:
self.pos += (self.velocity * dt) + (self.acceleration * ((dt ** 2) / 2))
self.velocity += self.acceleration * dt
self.acceleration = self.force / self.mass
또 다른 주제 충돌
Project Name
│ main.py
└───core
│ │ camera.py
│ │ environment.py
│ │ file.py
│ │ physics.py
│ │ planet.py
│ │ vector.py
│
└───gui
│ screens
│ app.py
│ controls.py
assets 여기 우리의 이미지입니다demos 여기에 우리의 데모와 주가 파일로 저장됩니다.resources 일부 Stubid 글로벌 변수testing 테스트 폴더입니다 공간-시뮬레이션이 개선 될 수있는 방법에 대한 제안이 있거나 버그를보고하려면 문제를여십시오! 우리는 모든 공헌을 좋아합니다.
자세한 내용은 기고 가이드를 확인하십시오.
Suliman Awad [email protected] LinkedIn
프로젝트 링크 : https://github.com/suliman-99/space-simulation
MIT 라이센스
저작권 (C) 2023 Suliman Awad
자세한 내용은 라이센스 파일을 확인하십시오.