Skip to content

Commit a3b5d7f

Browse files
authored
Rename project to Delta-Engine and enhance README
Updated README to reflect new project name and features.
1 parent 80bf4d5 commit a3b5d7f

File tree

1 file changed

+44
-31
lines changed

1 file changed

+44
-31
lines changed

README.md

Lines changed: 44 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,33 @@
1-
# Electrostatic-Library
2-
> A library template utilizing the Electrostatic-Sandbox SDK, acting as an extension pack.
3-
4-
This is a template that builds a cross-platform native library for Linux variants, Android variants, and AVR MCU variants linking them against the Electrostatic-Sandbox SDK libraries. The library is built into static archives, and dynamic libraries. The template is also provided by `examples` module in which a single source file with a `main` function could be compiled and run on its respective system.
5-
6-
<img width="1147" height="290" alt="image" src="https://github.com/user-attachments/assets/d2b9a685-a063-4bf1-b0ee-bf4ce5e1d4f4" />
7-
8-
## System Requirements
9-
1) A GNU/Linux System or a WSL System.
10-
2) A minimum of 1GB RAM, and 4GB Disk Space.
11-
3) If planned Microcontroller development; ATMega32 and/or ATMega328p are the currently supported ones.
12-
4) If planned Android development; all Android variants are supported.
1+
# Delta-Engine
2+
3+
A realtime Newtonian-based physics and hardware engine library with an API designed to address problems of simulation and real object dynamics; the idea is to couple building a physics simulator with emulating IO using the same abstraction via polymorphism and encapsulation (e.g., building a human joint simulator on a 3D game engine and deploying it on a hardware stepper motor module to emulate the same motion using electronic components in a different system using the same code).
4+
5+
## General List of supported features
6+
- [ ] N-dimensional Physics Spaces.
7+
- [ ] CPU-based Realtime monitoring.
8+
- [ ] Support for Classical Linear Newtonian Mechanics.
9+
- [ ] Support for Classical Rotational Newtonian Mechanics.
10+
- [ ] Operates its pipeline using Newton's Laws of Motion.
11+
- [ ] Uses pure vectorial structures from the _Electrostatic SDK_.
12+
- [ ] Wires the software simulation with your hardware abstraction layer that controls the outside environment based on the provided physical model.
13+
14+
## Problems and solutions preview
15+
| Problems | Solutions |
16+
|----------|-----------|
17+
| N-dimensionality: | |
18+
| Creating physics spaces: | |
19+
| Motion-based runtime environment: | |
20+
| Attaching and detaching objects with physical properties: | |
21+
| Equilibrium and forces: | |
22+
| Transforming objects using external linear momentums: | |
23+
| Transforming objects using external linear forces: | |
24+
| Transforming objects using external angular momentums: | |
25+
| Transforming objects using external angular forces: | |
26+
| Transforming objects using other objects in space (Newton's third law): | |
27+
| Collision detection of objects in the physics space: | |
28+
| Collision avoiding objects in the physics space: | |
29+
| Updating objects in realtime based on CPU slices: | |
30+
| Physical objects groups and group physics: | |
1331

1432
## Setup the Electrostatic Environment
1533
This will install missing dependencies (CLI tools and toolchains) in `/opt/electrostatic-sandbox` that shall be utilized by the SDK build front-end and CMake to build the applications.
@@ -18,6 +36,20 @@ This will install missing dependencies (CLI tools and toolchains) in `/opt/elect
1836
chmod +rwx ./helper-scripts/setup-environment/setup-sandbox.sh && \
1937
./helper-scripts/setup-environment/setup-sandbox.sh
2038
```
39+
> [!IMPORTANT]
40+
> Windows devices will require Windows-Subsystem for Linux (WSL) and a distribution package to be installed; make sure to setup them on your machine via the powershell:
41+
> 1) Run a new powershell or a windows terminal powershell session as administrator.
42+
> 2) Set the execution policy of the current session for the current process as "Bypass" to enable running unauthorized scripts, which will be reverted normally to the default "restricted" policy when this session is over:
43+
> ```powershell
44+
> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
45+
> ```
46+
> 3) Run the script:
47+
> ```powershell
48+
> setup-wsl-debian.ps1
49+
> ```
50+
> 4) Reboot if needed, and follow-on to enable BIOS/UEFI CPU virtualization if necessary.
51+
> 5) The script enables the WSL and windows virtualization features, download WSL Debian Distribution binaries, and sets up the `usbipd` utility for routing usb ports across servers.
52+
> 6) Continue with setting up and customizing your development environment.
2153
2254
## Build the application binary (.elf)
2355
This will build the application binary to all supported platforms; usually if a new build routine is to be built, it has to go here.
@@ -36,14 +68,6 @@ https://github.com/Electrostat-Lab/Electrostatic-Library/blob/a6d9669dde096c0228
3668
They are dependent on that abstraction:
3769
https://github.com/Electrostat-Lab/Electrostatic-Library/blob/a6d9669dde096c02285e28c5657aa2438793b367/helper-scripts/abstract/abstract-compile.sh#L1-L41
3870

39-
## Changing the project output name
40-
This could be attained by changing the variable `COMMISSION_LIB` and `COMMISSION_LIB_AR` in the `./helper-scripts/project-impl/variables.sh`:
41-
https://github.com/Electrostat-Lab/Electrostatic-Library/blob/a6d9669dde096c02285e28c5657aa2438793b367/helper-scripts/project-impl/variables.sh#L8-L9
42-
43-
## Adding new dependencies
44-
Add your dependencies in the `libs` directory with the system directory of choice if required (in case of platform-dependent binaries); the build script finds all libraries listed under this directory through this code snippet:
45-
https://github.com/Electrostat-Lab/Electrostatic-Library/blob/a6d9669dde096c02285e28c5657aa2438793b367/helper-scripts/project-impl/compile-electrostatic.sh#L27-L38
46-
4771
## Adding new examples to test the introduced APIs
4872
* Adding new examples could be achieved by creating new source code (single source files) under the `examples` module, and using the following command to compile and run the example:
4973
```bash
@@ -54,14 +78,3 @@ $ ./cmake-build/linux/x86-64/exe/executable-example.elf
5478
> This command links the specified source example against the `Electrostatic-Sandbox SDK` libraries and the `Electroextension` library (your native library).
5579
5680
* Adding new examples for microcontroller programming is much the same, but will require uploading as a post-compilation script.
57-
58-
## Excluding parts of the source code (dissociating the source code into modules)
59-
This could be attained through the build routines of the supported systems by decomposing the source directory into sub-directories and pass them as source modules to the compilation front-end (Ccoffee); the following shows the use of all the source code as a single module:
60-
https://github.com/Electrostat-Lab/Electrostatic-Library/blob/a6d9669dde096c02285e28c5657aa2438793b367/helper-scripts/project-impl/compile-all-android.sh#L4-L12
61-
62-
## Build front-end automata, CMake, and Toolchains
63-
Essentially, the build architecture of the Electrostatic-Sandbox SDK is based on the idea of creating a front-end scripted API that creates a building automata, which entails taking an input and passing into a chain of states, and eventually ending with a terminal state; thus the recognition of the machine to the building holds if the terminal state is being reached by the program counter. The initial input to the automata is mainly a building routine instruction and the outputs are proceeded and could be found at the filesystems cmake-build and build, where the terminal output is produced.
64-
65-
The build of the Electrostatic-applications is much simpler than the SDK; it's literally a subset of it.
66-
67-
For more; refer to the [build architecture of the Electrostatic-Sandbox SDK](https://github.com/Electrostat-Lab/Electrostatic-Sandbox/blob/master/electrostatic-sandbox-framework/docs/system-build/architecture.md).

0 commit comments

Comments
 (0)