{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://askcalculators.com/calculator/right-triangle-calculator/schema.json",
  "title": "Right Triangle Calculator inputs",
  "description": "Solve a right triangle from two known values and calculate all sides, acute angles, altitude, area, and perimeter.",
  "type": "object",
  "properties": {
    "mode": {
      "title": "Known values",
      "type": "string",
      "default": "legs",
      "enum": [
        "legs",
        "leg-hypotenuse",
        "hypotenuse-angle",
        "leg-angle",
        "area-leg"
      ],
      "x-optionLabels": {
        "legs": "Two legs (a and b)",
        "leg-hypotenuse": "One leg and hypotenuse",
        "hypotenuse-angle": "Hypotenuse and angle α",
        "leg-angle": "Leg a and angle α",
        "area-leg": "Area and leg a"
      }
    },
    "legA": {
      "title": "Leg a",
      "type": "number",
      "default": 3,
      "minimum": 0.000001,
      "x-step": 0.01,
      "x-showWhen": {
        "field": "mode",
        "equals": "legs"
      }
    },
    "legB": {
      "title": "Leg b",
      "type": "number",
      "default": 4,
      "minimum": 0.000001,
      "x-step": 0.01,
      "x-showWhen": {
        "field": "mode",
        "equals": "legs"
      }
    },
    "knownLeg": {
      "title": "Known leg a",
      "type": "number",
      "default": 3,
      "minimum": 0.000001,
      "x-step": 0.01,
      "x-showWhen": {
        "field": "mode",
        "equals": "leg-hypotenuse"
      }
    },
    "knownHypotenuse": {
      "title": "Hypotenuse c",
      "type": "number",
      "default": 5,
      "minimum": 0.000001,
      "x-step": 0.01,
      "x-showWhen": {
        "field": "mode",
        "equals": "leg-hypotenuse"
      }
    },
    "angleHypotenuse": {
      "title": "Hypotenuse c",
      "type": "number",
      "default": 5,
      "minimum": 0.000001,
      "x-step": 0.01,
      "x-showWhen": {
        "field": "mode",
        "equals": "hypotenuse-angle"
      }
    },
    "angleAlpha": {
      "title": "Angle α",
      "type": "number",
      "default": 36.869897,
      "minimum": 0.000001,
      "x-step": 0.01,
      "x-showWhen": {
        "field": "mode",
        "equals": "hypotenuse-angle"
      }
    },
    "angleLeg": {
      "title": "Leg a",
      "type": "number",
      "default": 3,
      "minimum": 0.000001,
      "x-step": 0.01,
      "x-showWhen": {
        "field": "mode",
        "equals": "leg-angle"
      }
    },
    "legAngleAlpha": {
      "title": "Angle α",
      "type": "number",
      "default": 36.869897,
      "minimum": 0.000001,
      "x-step": 0.01,
      "x-showWhen": {
        "field": "mode",
        "equals": "leg-angle"
      }
    },
    "areaInput": {
      "title": "Area",
      "type": "number",
      "default": 6,
      "minimum": 0.000001,
      "x-step": 0.01,
      "x-showWhen": {
        "field": "mode",
        "equals": "area-leg"
      }
    },
    "areaLeg": {
      "title": "Leg a",
      "type": "number",
      "default": 3,
      "minimum": 0.000001,
      "x-step": 0.01,
      "x-showWhen": {
        "field": "mode",
        "equals": "area-leg"
      }
    },
    "angleUnit": {
      "title": "Angle input unit",
      "type": "string",
      "default": "degrees",
      "enum": [
        "degrees",
        "radians"
      ],
      "x-optionLabels": {
        "degrees": "Degrees",
        "radians": "Radians"
      }
    }
  },
  "required": [
    "mode",
    "angleUnit"
  ],
  "allOf": [
    {
      "if": {
        "properties": {
          "mode": {
            "const": "legs"
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "legA"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "mode": {
            "const": "legs"
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "legB"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "mode": {
            "const": "leg-hypotenuse"
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "knownLeg"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "mode": {
            "const": "leg-hypotenuse"
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "knownHypotenuse"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "mode": {
            "const": "hypotenuse-angle"
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "angleHypotenuse"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "mode": {
            "const": "hypotenuse-angle"
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "angleAlpha"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "mode": {
            "const": "leg-angle"
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "angleLeg"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "mode": {
            "const": "leg-angle"
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "legAngleAlpha"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "mode": {
            "const": "area-leg"
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "areaInput"
        ]
      }
    },
    {
      "if": {
        "properties": {
          "mode": {
            "const": "area-leg"
          }
        },
        "required": [
          "mode"
        ]
      },
      "then": {
        "required": [
          "areaLeg"
        ]
      }
    }
  ],
  "additionalProperties": false,
  "x-askcalculators": {
    "version": "2.0.0",
    "calculatorUrl": "https://askcalculators.com/calculator/right-triangle-calculator/",
    "queryExample": "https://askcalculators.com/calculator/right-triangle-calculator/?mode=legs&legA=3&legB=4&angleUnit=degrees",
    "migrationStatus": "migrated",
    "reviewStatus": "pending",
    "pageStatus": "live",
    "workStatus": "pending",
    "migratedDate": "2026-08-25",
    "formula": {
      "expression": "a²+b²=c²; α=atan(a/b); β=90°−α; area=ab/2; altitude h=ab/c."
    },
    "quality": {
      "availability": "live",
      "technicalReviewRecord": "/reviews/right-triangle-calculator.json",
      "qualifiedReview": "pending",
      "qualifiedReviewer": null,
      "qualifiedReviewDate": null,
      "formulaVersion": "2.0.0",
      "referenceCoverage": "references-listed",
      "releaseTestScope": "Catalog and regression checks are not a professional formula audit; consult release evidence.",
      "historicalMetadataDate": "2026-08-25",
      "historicalMetadataNotice": "The imported date is not evidence of a completed human review."
    },
    "outputs": {
      "sideA": {
        "title": "Leg a",
        "type": "number",
        "x-format": "number",
        "x-digits": 6,
        "x-primary": true
      },
      "sideB": {
        "title": "Leg b",
        "type": "number",
        "x-format": "number",
        "x-digits": 6
      },
      "hypotenuse": {
        "title": "Hypotenuse c",
        "type": "number",
        "x-format": "number",
        "x-digits": 6
      },
      "angleAlphaResult": {
        "title": "Angle α",
        "type": "number",
        "x-format": "number",
        "x-suffix": "°",
        "x-digits": 6
      },
      "angleBetaResult": {
        "title": "Angle β",
        "type": "number",
        "x-format": "number",
        "x-suffix": "°",
        "x-digits": 6
      },
      "altitude": {
        "title": "Altitude to hypotenuse",
        "type": "number",
        "x-format": "number",
        "x-digits": 6
      },
      "area": {
        "title": "Area",
        "type": "number",
        "x-format": "number",
        "x-digits": 6
      },
      "perimeter": {
        "title": "Perimeter",
        "type": "number",
        "x-format": "number",
        "x-digits": 6
      }
    }
  }
}
