Explore the symmetry of the 32 crystallographic point groups! This is a mirror of: https://gitlab.com/crystal-symmetry/symm32/


Symm32 is a Crystal (programming language) library for working with the 32 crystallographic point groups. It provides classes, isometries, and other logic related to exploring their symmetries.


Add this to your application's shard.yml:

    gitlab: crystal-symmetry/symm32


To use the Symm32 library, you need only require it like so:

require "symm32"

This gives you access to Symm32::POINT_GROUPS an array of the 32 point groups, as well as a helper method for selecting a point group by name: Symm32.point_group(name). Please see the docs for more details.


Contributions are welcome! To get things started you can open an issue and post a comment, correction, or feature request. From there we can talk about how best to incorporate (or not) your feedback.

Please note! Your contribution should include tests and be well documented. If you're new to crystal then you might want to at least read this section of the docs: Writing Shards. Also, beware, the docs are generated in this project like so: crystal docs src/symm32.cr since the initialization of this module is order-dependent.

In general, if you want, you can just pull this code down, start hacking on it, and then push it back here as a "Pull Request", then we can discuss your proposed changes.

  1. Fork it (https://gitlab.com/crystal-symmetry/symm32/forks/new)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

But I recommend you start off by opening an issue so that you don't waste time on a potentially unwelcome change.


  • KCErb KC Erb - creator, maintainer
Github statistic:
  • 1
  • 0
  • 0
  • 1
  • 0
  • 2 months ago


MIT License