# Affine2d fixed set

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

Classify and compute the exact fixed locus of a rational 2D affine map.

**Use when you need to: find fixed points of affine transform · compute affine fixed locus · classify fixed set as point line all or none.**

## Decide before calling

Read the [versioned contract](/v1/tools/affine2d-fixed-set/versions/1.0.0) and the supported scope below. Reuse `affine2d-fixed-set@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-fixed-set@1.0.0` for find fixed points of affine transform. 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

- find fixed points of affine transform
- compute affine fixed locus
- classify fixed set as point line all or none
- solve exact 2D affine fixed equations
- find invariant points of planar map
- exact rational fixed line

## Not supported

- iterated periodic points
- approximate eigenspaces

## Behavior

- Solve (M-I)p=-t with exact rank predicates.
- Result is all, none, point, or line.
- A line a*x+b*y=c has first nonzero coefficient 1.

## Input

- `transform` (object, required)

## Output

- `kind` (one of "all", "none", "point", "line", required)
- `point` (object, optional)
- `line` (object, optional)
- `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": "0",
    "ty": "0"
  }
}
```

Response:

```json
{
  "result": {
    "kind": "all",
    "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-fixed-set",
  "version": "1.0.0",
  "input": {
    "transform": {
      "a": "1",
      "b": "0",
      "c": "0",
      "d": "1",
      "tx": "0",
      "ty": "0"
    }
  }
}
```

### HTTP (no key)

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

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

### CLI

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

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

## Related tools

- [Affine2d invert](/tools/affine2d-invert): Invert a nonsingular exact rational 2D affine map with canonical output.
- [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 invert](/tools/homography-invert): Invert an exact nonsingular 2D homography and return a canonical projective matrix.
- [Point in polygon classify](/tools/point-in-polygon-classify): Classifies a rational-coordinate point as inside, outside, or boundary using an exact half-open ray rule.
