{"id":"affine2d-compose","version":"1.0.0","description":"Compose two exact rational 2D affine maps in first-then-second order.","supported_operations":["compose affine transformations exactly","combine two 2D affine maps","multiply affine transform matrices","apply first transform then second","exact rational affine composition","merge planar affine transforms"],"unsupported_operations":["three dimensional affine maps","floating point approximation"],"semantics":["Coordinates use x'=a*x+c*y+tx and y'=b*x+d*y+ty.","The result is second(first(p)); order is not commuted.","Rationals are canonical reduced strings."],"limits":{"max_input_bytes":65536,"max_rational_chars":256,"max_items":256,"max_output_bytes":65536},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["first","second"],"properties":{"first":{"type":"object","additionalProperties":false,"required":["a","b","c","d","tx","ty"],"properties":{"a":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"b":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"c":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"d":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"tx":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"ty":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"}}},"second":{"type":"object","additionalProperties":false,"required":["a","b","c","d","tx","ty"],"properties":{"a":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"b":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"c":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"d":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"tx":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"ty":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"}}}}},"output_schema":{"type":"object","additionalProperties":false,"required":["transform","reference"],"properties":{"transform":{"type":"object","additionalProperties":false,"required":["a","b","c","d","tx","ty"],"properties":{"a":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"b":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"c":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"d":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"tx":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"},"ty":{"type":"string","minLength":1,"maxLength":256,"pattern":"^(?:0|-?[1-9][0-9]*)(?:/[1-9][0-9]*)?$"}}},"reference":{"type":"string","const":"Foley et al., Computer Graphics: Principles and Practice, affine transformations (2nd ed., 1990)"}}},"examples":[{"input":{"first":{"a":"1","b":"0","c":"0","d":"1","tx":"2","ty":"-3"},"second":{"a":"2","b":"0","c":"0","d":"3","tx":"0","ty":"0"}},"output":{"transform":{"a":"2","b":"0","c":"0","d":"3","tx":"4","ty":"-9"},"reference":"Foley et al., Computer Graphics: Principles and Practice, affine transformations (2nd ed., 1990)"}},{"input":{"first":{"a":"1","b":"0","c":"0","d":"1","tx":"0","ty":"0"},"second":{"a":"1","b":"0","c":"0","d":"1","tx":"0","ty":"0"}},"output":{"transform":{"a":"1","b":"0","c":"0","d":"1","tx":"0","ty":"0"},"reference":"Foley et al., Computer Graphics: Principles and Practice, affine transformations (2nd ed., 1990)"}}],"execute_url":"/v1/tools/affine2d-compose/versions/1.0.0/execute"}