# `GSTransformComponents`

*Function*

## Declaration

```swift
func GSTransformComponents(_ M: NSAffineTransformStruct, _ sX: UnsafeMutablePointer<CGFloat>?, _ sY: UnsafeMutablePointer<CGFloat>?, _ R: UnsafeMutablePointer<CGFloat>?, _ shearX: UnsafeMutablePointer<CGFloat>?, _ shearY: UnsafeMutablePointer<CGFloat>?)
```

```objc
void GSTransformComponents(NSAffineTransformStruct M, CGFloat *sX, CGFloat *sY, CGFloat *R, CGFloat *shearX, CGFloat *shearY);
```

```python
GSTransformComponents(M: NSAffineTransformStruct, sX: float, sY: float, R: float, shearX: float, shearY: float)
```

## See Also

### Inflections, Curvature, and Normals

- [`GSCubicHasInflection`](/Core/GlyphsCore/GSCubicHasInflection)
- [`GSComputeInflection`](/Core/GlyphsCore/GSComputeInflection)
- [`GSComputeInflectionTimes`](/Core/GlyphsCore/GSComputeInflectionTimes)
- [`GSComputeInflectionTimesTolerance`](/Core/GlyphsCore/GSComputeInflectionTimesTolerance)
- [`curvatureMaxima`](/Core/GlyphsCore/curvatureMaxima)
- [`GSCurvatureSquaredForT`](/Core/GlyphsCore/GSCurvatureSquaredForT)
- [`GSSignedCurvatureForT`](/Core/GlyphsCore/GSSignedCurvatureForT) — Use this function as compared to `curvatureSquaredForT` if you compute the square root of the result anyway or if you need to know the sign of the curvature.
- [`GSNormalCubicForT`](/Core/GlyphsCore/GSNormalCubicForT)
- [`GSNormalQuadraticForT`](/Core/GlyphsCore/GSNormalQuadraticForT)

