Giter VIP home page Giter VIP logo

bigbang's People

Contributors

ameobea avatar expenses avatar sezna avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

expenses

bigbang's Issues

Collisional Tree

Currently, we don't scan for collisions. It would be a good addition, and should be opt-in either as a separate export or an additional flag to the tree.

Websocket Visualization Questions

I'm having trouble understanding what boundaries the viewport for the websocket example exist. Perhaps @Ameobea has some time to spell it out for me?

I want to remove the rng() for the largest entity that gets spawned in the middle's location, so it always starts roughly in the middle of the viewport. However, even with extensive trial and error, I cannot figure out what the appropriate x, y and z values are for this. This may be worth a new issue instead of this PR, though.

Housekeeping and code cleaning

entity.rs needs a refactor. The branching on the right and the left is no bueno. Some alternatives:

  • Keep the node structure but make a function do the stuff that's duplicated. Thread-spawn it (bench this) on big recursive calls and do both sides at once.
  • Change left, right to [Node; 2]
  • Node could be an enum of leaf or internal, getting rid of some options
  • The tree should be an iter so we don't have to process the entire vec beforehand
  • There might be better (unsafe?) ways to represent the tree in memory...maybe.

Custom derives?

Adding custom derive macros for AsEntity and maybe the response function wouldn’t be too hard and would have high payoff.

Tree Configurability

The ability to turn off collisions and set theta, time_step, and max_pts should be in some sort of tree_builder. additionally, I think that AsEntity shouldn't be implemented for Entity by default, that is the job of an example.

Docs issues/node should be private

I'm pretty sure pub root: Node<T> in gravtree doesn't need to be public. Also my syntax of [[linking to other things]] appears to be invalid.

Theta value doesn’t impact performance

The benchmarks using Criterion have highlighted that there is actually no performance benefit using a higher theta value, at least not in the situation of the benchmarks. This shouldn’t be the case. Some research on the frequency of theta being exceeded and how many nodes are actually in the trees should be conducted.

GPU? GPU!

Look into, and maybe implement, offloading computation to the GPU.

Potential acceleration application optimization

Currently apply_acceleration() returns a new Entity, and there are a few clones when new nodes are made. Would it be possible to make apply_acceleration() mutate self and make the entire simulation zero-copy?

Async/Await

If using async/await improves benchmarks beyond what is currently done with Rayon, it should be used. However, it may need to be behind a feature flag or perhaps an additional synchronous entry point, because I don't know how well FFI will play with async/await.

Results of Saturday's Powwow

  • Total mass is sometimes zero. As a temporary workaround, i set it to f64::MIN if it is zero, but really it should never be zero.
  • I need to refactor apply_velocity((f64,f64,f64), bool)) to a simulation_results struct and allow the implementor to do with the simulation what they want.
  • Docs need to reflect all of this.
  • Replace my own write data file functions with serde stuff.
  • More particles = way more gravity...
  • average of all accel forces instead of adding?
  • use nalgebra for points and point math, perhaps. or just abstract into my own matrix math/simd thing

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.