Homography incidence verify
homography-incidence-verify · version 1.0.0 · Geometry, location & color · free, no key needed
Verify exact point-line incidence before and after a 2D homography with certificates.
Use when you need to: verify projective incidence · check point lies on line after homography · certify homogeneous point line incidence.
Decide before calling
Read the versioned contract and the supported scope below. Reuse homography-incidence-verify@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 homography-incidence-verify@1.0.0 for verify projective incidence. 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
- verify projective incidence
- check point lies on line after homography
- certify homogeneous point line incidence
- exact incidence preservation test
- validate transformed point and line
- produce projective incidence certificate
Not supported
- approximate distance to a line
- polygon topology validation
Behavior
- Canonical rationals are integers or reduced p/q strings with a positive denominator.
- Homogeneous outputs are primitive integer tuples with first nonzero coordinate positive.
- All arithmetic and predicates use exact BigInt cross-products; binary floating point and epsilon comparisons are never used.
- Reference: Hartley & Zisserman, Multiple View Geometry, 2nd ed., Chapter 2.
Input
matrix(array of array of string, required): min items 3; max items 3; each min items 3; each max items 3; each each min length 1; each each max length 256; each each pattern^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$point(array of string, required): min items 3; max items 3; each min length 1; each max length 256; each pattern^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$line(array of string, required): min items 3; max items 3; each min length 1; each max length 256; each pattern^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$
Output
source_incident(boolean, required)transformed_incident(boolean, required)source_certificate(string, required): min length 1; max length 256; pattern^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$transformed_certificate(string, required): min length 1; max length 256; pattern^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$point(array of string, required): min items 3; max items 3; each min length 1; each max length 256; each pattern^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$line(array of string, required): min items 3; max items 3; each min length 1; each max length 256; each pattern^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$reference(constant "Hartley & Zisserman, Multiple View Geometry, 2nd ed., Chapter 2", required)
Limits
- max input bytes: 8192
- max rational bytes: 256
- max output bytes: 8192
- max tree nodes: 128
Example
Request input:
{
"matrix": [
[
"1",
"0",
"0"
],
[
"0",
"1",
"0"
],
[
"0",
"0",
"1"
]
],
"point": [
"1",
"2",
"1"
],
"line": [
"1",
"0",
"-1"
]
}
Response:
{
"result": {
"source_incident": true,
"transformed_incident": true,
"source_certificate": "0",
"transformed_certificate": "0",
"point": [
"1",
"2",
"1"
],
"line": [
"1",
"0",
"-1"
],
"reference": "Hartley & Zisserman, Multiple View Geometry, 2nd ed., Chapter 2"
}
}
How to call it
MCP
Connect https://computefirst.net/mcp (setup), then call execute with:
{
"id": "homography-incidence-verify",
"version": "1.0.0",
"input": {
"matrix": [
[
"1",
"0",
"0"
],
[
"0",
"1",
"0"
],
[
"0",
"0",
"1"
]
],
"point": [
"1",
"2",
"1"
],
"line": [
"1",
"0",
"-1"
]
}
}
HTTP (no key)
curl -X POST https://computefirst.net/v1/tools/homography-incidence-verify/versions/1.0.0/execute \
-H "Content-Type: application/json" \
-d '{"matrix":[["1","0","0"],["0","1","0"],["0","0","1"]],"point":["1","2","1"],"line":["1","0","-1"]}'
The machine-readable contract is at /v1/tools/homography-incidence-verify/versions/1.0.0.
CLI
node cli.mjs run homography-incidence-verify 1.0.0 --input input.json --base-url https://computefirst.net
Get the client at /clients/cli/.
Related tools
- Homography apply: Apply an exact 2D homography to a homogeneous point or line, including points at infinity.
- Point in polygon classify: Classifies a rational-coordinate point as inside, outside, or boundary using an exact half-open ray rule.
- Affine2d apply: Apply one exact rational 2D affine map to bounded points or free vectors.
- Affine2d fixed set: Classify and compute the exact fixed locus of a rational 2D affine map.
- Color contrast wcag: Compute WCAG 2.x relative luminance, contrast ratio, and AA/AAA pass flags for two opaque sRGB colors.
- Homography compose: Compose two exact 2D homographies and return a canonical projective matrix.