Symmetry element rendering

Hi

Was wondering if anyone has some input on rendering symmetry elements in Avogadro v2. There is a need for “disc” (mirror plane) and “vector” (rotation axis) geometries as well as alpha in order to make things look good. Im currently using the “cylinder” and “sphere” geometries, but as you can see they are not well suited for the job.

First off, a quick introduction to others - Marcus has been working on the libmsym library, which is now being used in Avogadro V1.x for point group symmetry detection and symmetrization.

He’s been working on what looks like a cool integration for AvoV2…

Was wondering if anyone has some input on rendering symmetry elements in Avogadro v2. There is a need for “disc” (mirror plane)

I think a generic “plane” (e.g., square) would be useful for things like Miller planes in crystals. Some programs also allow you to define a best-fit plane through a set of atoms and then make measurements (e.g., atom X is 4.5Å from the plane, etc.)

and “vector” (rotation axis) geometries as well as alpha in order to make things look good. Im currently using the “cylinder” and “sphere” geometries, but as you can see they are not well suited for the job.

Vector/line would be useful primitives for a number of things.

-Geoff

On Wed, Aug 19, 2015 at 11:26 AM, Marcus Johansson mcodev31@gmail.com wrote:

Hi

Was wondering if anyone has some input on rendering symmetry elements in Avogadro v2. There is a need for “disc” (mirror plane) and “vector” (rotation axis) geometries as well as alpha in order to make things look good. Im currently using the “cylinder” and “sphere” geometries, but as you can see they are not well suited for the job.

For some of the other display types we added factories to create
triangle geometry. Many things can be represented by triangle meshes,
we made the special cases for spheres because we were using impostors
and cylinders because there are lots of them and might want to use
impostors in the future.

It would be great to consider what primitives might be missing, and
either add factories that simply create meshes, or boost them to new
primitive types if that makes more sense. I also need to dig into an
issue with text rendering on Windows where it appears to be causing
crashes in the latest release.

It would be great to get symmetry elements in Avogadro 2, thanks for
working on this!

Thanks,

Marcus

Any chance someone could apply this patch to the avogadro v1 master symmetry extension /libmsym?

https://github.com/mcodev31/libmsym/commit/b2945fa8a5d7027f6afd8297af465f61981b9ba3.patch

I don’t have a fork and pressed for time.
It won’t build with g++ only with clang (requires VLA).

Might need to "set_target_properties (msym PROPERTIES POSITION_INDEPENDENT_CODE “TRUE”)” as well in symmetry/CMakeLists.txt. (not working on the arch linux package manager) since libmsym uses the BUILD_SHARED_LIBS flag.

On 21 Aug 2015, at 15:47, Marcus D. Hanwell mhanwell@gmail.com wrote:

It would be great to consider what primitives might be missing, and
either add factories that simply create meshes, or boost them to new
primitive types if that makes more sense. I also need to dig into an
issue with text rendering on Windows where it appears to be causing
crashes in the latest release.

Avogadro v1 has a nice transparent partial disc rendering for angles that would be nice for cubic groups, a rectangle would probably be better for the other ones since they have orientation.

It would be great to get symmetry elements in Avogadro 2, thanks for
working on this!

No problem it’s fun. There are some more features coming when I get the time:
Selection of symmetrically equivalent atoms (requires selection of atoms).
Symmetry locking when moving atoms (requires some way to restrict coordinate changes in plugins)
Generation of SALCs from basis functions (requires surface rendering)
Determination of irreducible representations and symmetrisation of basis functions from other calculations (proper symmetrisation requires code updates in libmsym).
Character table gui.