Copyright, 2024
Any use by anyone outside the owner of this repository is not allowed. Copying and modifying for your own programmatic logo generation needs is allowed but reusing the exact product of this repository or any image generated by it given no/minor modification to the source code is prohibited.
I reserve all rights for the use and replication of the images generated via this repository.
The logo is meant to invoke the appearance of both the letter "S" and a DNA-like structure with a dual helix. The design uses flat colors of differing shades to differentiate distance, with darker color representing the farther "strand" and the lighter color representing the "strand" facing the viewer.
The color theme used at the moment is Nord. More might be added over time.
After designing the logo by hand, I was frustrated about how I could not manage it programmatically without going into the .svg
file and changing values manually one at a time which, if you have worked with the format before, is tedious and not at all engaging.
So I took it upon myself to replicate the design I came up with by hand using a programming language and some .svg
manipulation library. For this I chose Python and its publicly available drawsvg
package.
Currently there are a number of source code files that work together to generate the "S". The breakdown is as follows:
- The
logo.py
script is the launch script which invokes the classes from... CenteredLogo.py
andRepeatedLogo.py
class definitions based on theBaseLogo.py
class...- That uses the
Curve.py
class definition to draw parts of the logo by... - Using parameters from
image_config.yaml
andlogo_config.yaml
configuration files.
The logo has an origin coordinate, from where the "major" and "minor" grooves, extended to Bezier curves, start out from. Using configuration values the heights, widths, colors and even the curvatures of each part can be adjusted. It is all parametrized and as long as the goal is to create a centered logo design on a flat background, all can be done through simply modifying the configuration file.
The configuration file contains a list of entries, which means that by duplicating and changing up the parameters specified one can produce multiple logos without interfering with previous versions, allowing for quick and effortless prototyping and comparisons.
Clone repository, cd
to the cloned directory, create the conda
environment or simply install the required dependencies manually, activate the environment if working with conda
then run the logo.py
script.
git clone https://github.com/sdemiriz/logo.git
cd logo/
conda env create -n sdemiriz-logo --file environment.yml
conda activate sdemiriz-logo
python logo.py
Copy the first logo1
segment in its entirety and paste it into the same file as a second entry under a different name, such as logo2
or any other name. Adjust available parameters. Turn on the debug flag to visualize Bezier curve handle positions and first curves generated by the script (which are then duplicated for a thickness effect) to get a grasp on the resulting curves being drawn based on provided parameters.
Edit the existing parameters in-place to change the look of the logo: height, width, distance between mirrored halves etc.
- Add shadows as per material design specifications where curves overlap
- Logo on circle background