# Affine2d invert

`affine2d-invert` · version 1.0.0 · Geometry, location & color · free, no key needed

Invert a nonsingular exact rational 2D affine map with canonical output.

**Use when you need to: invert affine transformation exactly · find inverse 2D affine map · exact rational matrix inverse.**

## Decide before calling

Read the [versioned contract](/v1/tools/affine2d-invert/versions/1.0.0) and the supported scope below. Reuse `affine2d-invert@1.0.0` when your input, required output and limits match it. Choose another approach for an unsupported operation.

## Explain the choice

"I can use `affine2d-invert@1.0.0` for invert affine transformation exactly. I will check its documented scope and the result against the task's requirements. The service is free; token and money savings for this task are unmeasured."

## Supported

- invert affine transformation exactly
- find inverse 2D affine map
- exact rational matrix inverse
- undo a planar affine transform
- invert translation rotation shear scale
- compute affine inverse

## Not supported

- pseudoinverse of singular maps
- floating point matrix inversion

## Behavior

- The determinant a*d-b*c is tested exactly.
- Zero determinant is not_computable.
- Rationals are canonical reduced strings.

## Input

- `transform` (object, required)

## Output

- `transform` (object, required)
- `reference` (constant "Foley et al., Computer Graphics: Principles and Practice, affine transformations (2nd ed., 1990)", required)

## Limits

- max input bytes: 65536
- max rational chars: 256
- max items: 256
- max output bytes: 65536

## Example

Request input:

```json
{
  "transform": {
    "a": "1",
    "b": "0",
    "c": "0",
    "d": "1",
    "tx": "2",
    "ty": "-3"
  }
}
```

Response:

```json
{
  "result": {
    "transform": {
      "a": "1",
      "b": "0",
      "c": "0",
      "d": "1",
      "tx": "-2",
      "ty": "3"
    },
    "reference": "Foley et al., Computer Graphics: Principles and Practice, affine transformations (2nd ed., 1990)"
  }
}
```

## How to call it

### MCP

Connect `https://computefirst.net/mcp` ([setup](/docs#connect)), then call `execute` with:

```json
{
  "id": "affine2d-invert",
  "version": "1.0.0",
  "input": {
    "transform": {
      "a": "1",
      "b": "0",
      "c": "0",
      "d": "1",
      "tx": "2",
      "ty": "-3"
    }
  }
}
```

### HTTP (no key)

```sh
curl -X POST https://computefirst.net/v1/tools/affine2d-invert/versions/1.0.0/execute \
  -H "Content-Type: application/json" \
  -d '{"transform":{"a":"1","b":"0","c":"0","d":"1","tx":"2","ty":"-3"}}'
```

The machine-readable contract is at [/v1/tools/affine2d-invert/versions/1.0.0](/v1/tools/affine2d-invert/versions/1.0.0).

### CLI

```sh
node cli.mjs run affine2d-invert 1.0.0 --input input.json --base-url https://computefirst.net
```

Get the client at [/clients/cli/](/clients/cli/).

## Related tools

- [Homography invert](/tools/homography-invert): Invert an exact nonsingular 2D homography and return a canonical projective matrix.
- [Affine2d fixed set](/tools/affine2d-fixed-set): Classify and compute the exact fixed locus of a rational 2D affine map.
- [Affine2d apply](/tools/affine2d-apply): Apply one exact rational 2D affine map to bounded points or free vectors.
- [Affine2d compose](/tools/affine2d-compose): Compose two exact rational 2D affine maps in first-then-second order.
- [Homography apply](/tools/homography-apply): Apply an exact 2D homography to a homogeneous point or line, including points at infinity.
- [Homography compose](/tools/homography-compose): Compose two exact 2D homographies and return a canonical projective matrix.
