Crystal symmetry makes many crystal directions equivalent. A fundamental sector is a patch of the unit sphere that contains a representative of every symmetry-equivalent family. Its interior contains exactly one representative from each general family; directions on the boundary need a qualification discussed below.
This page assumes the Miller notation from Miller Indices and
the equivalent-direction families from Operations. The sector
is the domain of an inverse pole figure. It is also
the region into which projectIntoFundamentalRegion maps crystal directions.
from mtex import *
A Cubic Example
For the cubic Laue group m-3m, the sector is the familiar spherical triangle with
corners at \([001]\), \([101]\), and \([111]\).
cs = crystalFrame('m-3m')
corners = Miller([[0, 0, 1], [1, 0, 1], [1, 1, 1]], cs, 'uvw')
plot(cs)
hold(True)
plot(cs.fundamentalSector(), color='red')
plot(corners, labeled=True, markerFaceColor='white', backgroundColor='w')
hold(False)

The black symbols and lines show the symmetry elements. The red boundary encloses the sector, and the three labelled directions identify its corners.
How MTEX Stores the Sector
sphericalRegion represents the sector as an intersection of spherical half-spaces.
sR = cs.fundamentalSector()
sR
sphericalRegion
faces : 3
vertices: 3
The summary reports three edge normals, one for each side of the cubic triangle. They
are stored in sR.N.
sR.N
array([[ 0.7071, -0.7071, 0. ],
[-0.7071, 0. , 0.7071],
[ 0. , 1. , 0. ]])
For this sector, a direction \(\mathbf{v}\) lies inside when every normal \(\mathbf{n}_i\) satisfies \(\mathbf{n}_i \cdot \mathbf{v} \geq 0\). The rows printed above are those inward-pointing unit normals in the crystal reference frame.
Testing and Projecting
Consider the Miller direction \((231)\).
v = Miller(2, 3, 1, cs)
checkInside tests it against all three half-spaces.
isInside = sR.checkInside(v)
isInside
False
The false result means that \((231)\) is outside the chosen sector. It does not mean that its symmetry-equivalent family is absent.
projectIntoFundamentalRegion selects an equivalent representative inside the sector.
vFundamental = v.projectIntoFundamentalRegion()
vFundamental
vector3d (m3̅m)
h k l
2 1 3
The result is \((213)\), a symmetry-equivalent permutation of the indices. Both directions belong to the same \(\{123\}\) form; the sector selects one representative from that family.
hold(True)
plot(v)
plot(vFundamental, markerFaceColor='red')
hold(False)

The original marker lies outside the red triangle, while the filled red marker lies inside it. Their different positions do not make them crystallographically distinct.
Other Laue Groups
The exact point group determines the shape of the sector. Lower symmetry means fewer
equivalent copies and therefore a larger sector. Only point group 1 leaves the whole
sphere. The triclinic Laue group \(\bar{1}\) already halves it because inversion
identifies every direction with its opposite. The other ten Laue groups are shown below.
mtexFig = newMtexFigure(layout=[2, 5], figSize='medium')
for lId in range(2, 12):
ax = mtexFig.nextAxis()
cs = crystalFrame(LaueId=lId)
plot(cs, parent=ax)
hold(True)
plot(cs.fundamentalSector(), parent=ax, color='red', lineWidth=3)
hold(False)
mtexTitle(cs.LaueName())

Each panel shows the symmetry elements of one Laue group and outlines its sector in
red. Within this gallery, the sector area is inversely proportional to the number of
symmetry operations. Moving from 6/mmm to 2/m enlarges the red patch by exactly the
factor by which the number of symmetry operations falls.
Point Groups, Laue Groups, and Boundaries
A fundamental sector follows the point group supplied to MTEX. Adding the antipodal
option identifies \(\mathbf{v}\) with \(-\mathbf{v}\) and is equivalent to using the
corresponding Laue group. This distinction matters for a non-centrosymmetric crystal:
its point-group sector may be larger than its Laue-group sector.
The gallery uses Laue groups because conventional diffraction commonly identifies
Friedel pairs. MTEX does not impose that antipodal identification when a point group is
used without antipodal.
For a point group \(G\), a general direction has \(\mathrm{ord}(G)\) symmetry-equivalent copies. The sector therefore covers the fraction \(1/\mathrm{ord}(G)\) of the sphere, or spherical area \(4\pi/\mathrm{ord}(G)\). A direction fixed by a nonidentity operation has fewer distinct copies and often lies on an edge or vertex.
Not every edge is a symmetry element. A closed sector can contain two equivalent representatives on paired seam edges. Consequently, projection is unique in the interior but a boundary tie may be resolved by either representative. Both answers are crystallographically equivalent.
References
- Th. Hahn, H. Klapper, U. Müller, and M. I. Aroyo, Point groups and crystal classes, International Tables for Crystallography A, ch. 3.2, 2016, tabulates point-group stereograms, general orbits, and special directions.
- D. Chateigner, L. Lutterotti, and M. Morales, Quantitative texture analysis and combined analysis, International Tables for Crystallography H, ch. 5.3, shows the nonredundant inverse-pole-figure sectors for the crystal systems.
- A. Morawiec, Orientations and Rotations: Computations in Crystallographic Textures, Springer, 2004, develops symmetry reduction for directions and orientations.
- G. Nolze and R. Hielscher, Orientations - perfectly colored, Journal of Applied Crystallography 49, 1786-1802, 2016, explains how fundamental-sector topology constrains inverse-pole-figure colour keys.
Next
A sector is a purely geometric object and carries no orientation information. Its counterpart for orientations is the Fundamental Region, represented by an orientationRegion. The sector is also what an inverse pole figure is drawn on.
Continue in this chapter with Quasi Symmetries, where the same construction reduces directions under non-crystallographic point groups.
Technical Details
fundamentalSector is a method here, as it is computed from the group; sR.N is the
NumPy array of the edge normals, one per row. The Laue class by number is
crystalFrame(LaueId=k).
Citing this page.
This page is part of the documentation of
MTEX, a free and open
source MATLAB toolbox for analyzing and modeling crystallographic textures.
It was written by The MTEX Developers and is published at
https://mtex-toolbox.github.io/FundamentalSector_py.html.
If you use MTEX, or reuse text or figures from this page, in your research,
please cite
F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63
BibTeX
@article{bachmann2010mtex,
author = {F. Bachmann and R. Hielscher and H. Schaeben},
title = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
journal = {Solid State Phenomena},
volume = {160},
pages = {63-68},
year = {2010},
doi = {10.4028/www.scientific.net/SSP.160.63},
url = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}
Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.