All Projects → jshor → tycho

jshor / tycho

Licence: MIT license
🪐 A real-time, WebGL-based interactive simulation of our solar system.

Programming Languages

javascript
184084 projects - #8 most used programming language
SCSS
7915 projects
HTML
75241 projects

Projects that are alternatives of or similar to tycho

solarsystemts
케플러 방정식을 이용한 태양계 행성들의 궤도 계산 시뮬레이터
Stars: ✭ 49 (-45.56%)
Mutual labels:  threejs, solar-system
Solar System Threejs
The Solar System: Modeled to scale with Three.js
Stars: ✭ 107 (+18.89%)
Mutual labels:  threejs, nasa
Urdf Loaders
URDF Loaders for Unity and THREE.js with example ATHLETE URDF Files
Stars: ✭ 129 (+43.33%)
Mutual labels:  threejs, nasa
cuber
优美而强大的网页魔方
Stars: ✭ 32 (-64.44%)
Mutual labels:  threejs
building-editor
3D model editor for building/architecture
Stars: ✭ 24 (-73.33%)
Mutual labels:  threejs
three-strip
Generate strip geometry for three.js. Supports taper, twist, dasharray and uvgen.
Stars: ✭ 15 (-83.33%)
Mutual labels:  threejs
three-to-cannon
Convert a THREE.Mesh to a CANNON.Shape.
Stars: ✭ 207 (+130%)
Mutual labels:  threejs
gl-bench
⏱ WebGL performance monitor with CPU/GPU load.
Stars: ✭ 146 (+62.22%)
Mutual labels:  threejs
WebGL-Billiards
ThreeJS based 8-ball pool
Stars: ✭ 28 (-68.89%)
Mutual labels:  threejs
icosa-viewer
3D Viewer component for Tilt Brush / Open Brush, Google Blocks files and their derivatives
Stars: ✭ 24 (-73.33%)
Mutual labels:  threejs
react-with-threejs-example
An example project integrating React with three.js
Stars: ✭ 27 (-70%)
Mutual labels:  threejs
frontend-park
哈喽大家好~我是荣顶!这是一个有趣的前端趣味知识公园~该项目是我平时捣鼓前端相关技术的一些案例集合。
Stars: ✭ 66 (-26.67%)
Mutual labels:  threejs
gamedex
👾 The code for my game dev + computer graphics experiments on YouTube.
Stars: ✭ 165 (+83.33%)
Mutual labels:  threejs
detect-gpu
Classifies GPUs based on their 3D rendering benchmark score allowing the developer to provide sensible default settings for graphically intensive applications.
Stars: ✭ 749 (+732.22%)
Mutual labels:  threejs
Photo-Sphere-Viewer
A JavaScript library to display Photo Sphere panoramas.
Stars: ✭ 1,198 (+1231.11%)
Mutual labels:  threejs
blockcraft-public
BlockCraft is a WebGL implementation of an infinite procedurally-generated voxel world that runs on the browser. This project originally spawned as a Minecraft Classic clone but has expanded to include multiplayer PvP, crafting, shaders and much more!
Stars: ✭ 22 (-75.56%)
Mutual labels:  threejs
Big-Data-Demo
基于Vue、three.js、echarts,数据可视化展示项目,包含三维模型导入交互、三维模型标注等功能
Stars: ✭ 146 (+62.22%)
Mutual labels:  threejs
racing-game-cljs
A 3D racing game built with ClojureScript, React and ThreeJS
Stars: ✭ 209 (+132.22%)
Mutual labels:  threejs
DepthKit-A-Frame
🎥 An A-Frame component for rendering DepthKit volumetric videos in WebVR
Stars: ✭ 34 (-62.22%)
Mutual labels:  threejs
codrops-texture-projection
Article about Texture Projection in Three.js
Stars: ✭ 75 (-16.67%)
Mutual labels:  threejs


Code coverage Build status License | MIT

About This Project

This is a real-time, WebGL-based, 3D visualization of our Solar System. It's a complete re-write of the original Tycho.io project. Check out the full experience at tycho.io!

Table of Contents

Running the app

  1. Clone this repo.
git clone https://github.com/jshor/tycho2.git
  1. Use the right node version.
nvm use
  1. Install dependencies (via yarn).
yarn install
  1. Start
yarn start

Development

Package Management

Using Yarn.

Framework + Libraries

This app is built using React.js/Redux, THREE.js, and uses react-three-renderer for THREE-based React components. It's bootstrapped using Create React App.

Styling

Each DOM component contains a corresponding Sass stylesheet and employs the BEM CSS design pattern. This app uses node-sass-chokidar for Sass compilation.

Testing

Tests use Jest, enzyme, and snapshot testing for components.

Testing Guidelines

  • The importance of code coverage should not supercede the importance of writing good quality tests.
  • Methods for containers should contain a corresponding unit test, and is ideally written as a pure function.
  • For exceptions, such as when a local state is updated, there should be a corresponding integration test.
  • Components should be snapshot tested.
  • TDD and BDD.

Application Architecture

The overall architecture uses the React/Redux container pattern. In a nutshell, containers in this app leverage tasks such as handling state and minor front-end logic, while components simply handle the presentation. Physics calculations and business logic is delegated to services, and some critical components, such as the Camera, have dedicated services.

State management

All shared-state data is stored in the Redux store. This includes the 2D and 3D positions of objects and the current time. This enables unidirectional data flow (see advantages of Redux). In rare cases, some components will use the local state for things internal to that component, when appropriate.

Static Data

The JSON data for orbitals.json is generated by the yarn orbitals script. It will look for all of the JSON files in the public/static/data/orbitals directory. For information on the file structure for these JSON files, please see the Wiki.

Folder Structure

This project utilizes a typical React app flat directory structure. Tests for each item typically live in __tests__. Components have corresponding tests and Sass in the same directory. __tests__ folders may contain __snapshots__ and __fixtures__.

Note that 3D React components and DOMElement ones coexist in the same general paths.

Static assets, such as textures, media, and data are stored in the public folder. The img, js, css and some JSON file contents are generated by build scripts.

Available Scripts

In the project directory, you can run the following commands:

yarn start

Runs the app in the development mode.
It will also build the CSS using build-css. Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

yarn test

Launches the test runner in the interactive watch mode.

yarn test:coverage

Runs all tests and prints out code covfefe.

yarn lint

Runs the linter using ESLint.

yarn lint:fix

Fixes any linting errors discovered by the linter and reports any issues that could not be addressed automatically.

yarn build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
It also runs the compilation script for the orbital data json.
The build is minified and the filenames include the hashes.

yarn deploy

Performs a full deploy.
Requires credentials defined at ~/.aws/credentials. More info.

yarn deploy:upload

Uploads the build/ contents to the designated production AWS S3 bucket.

yarn deploy:invalidate

Invalidates the designated AWS CloudFront instance.

yarn orbitals

Runs the compilation script for the orbital data json.

yarn ephemeris

Takes all orbital JSONs, probes the NASA/JPL HORIZONS database for ephemeris data, and updates each JSON accordingly. For more information on this script, and on the prerequisite data format, please see this wiki page.

Supported Language Features and Polyfills

This project supports a superset of the latest JavaScript standard.
In addition to ES6 syntax features, it also supports:

Learn more about different proposal stages.

The following ES6 polyfills are available:

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].