{
  "title": "CornerFinderSpec",
  "public_path": "flex_rf.tidy3d.CornerFinderSpec",
  "lookup_path": "tidy3d.rf.CornerFinderSpec",
  "slug": "flex_rf/tidy3d/CornerFinderSpec",
  "public_url": "/rf/latest/autogenerated/flex_rf/tidy3d/cornerfinderspec/",
  "object_kind": "class",
  "introduction": "Specification for corner detection on a 2D plane.",
  "notes": "",
  "examples": "",
  "references": "",
  "signature": "class CornerFinderSpec(Tidy3dBaseModel)",
  "source": {
    "path": "flex/public/tidy3d/tidy3d/components/grid/corner_finder.py",
    "url": "",
    "lineno": 29,
    "endlineno": 299
  },
  "bases": [
    "Tidy3dBaseModel"
  ],
  "parameter_rows": [
    {
      "name": "medium",
      "annotation": "Literal['metal', 'dielectric', 'all']",
      "default": "'metal'",
      "description": "Find corners of structures made of `Medium`, which can take value `metal` for PEC and lossy metal, `dielectric` for non-metallic materials, and `all` for all materials.",
      "origin": "declared"
    },
    {
      "name": "angle_threshold",
      "annotation": "float",
      "default": "CORNER_ANGLE_THRESOLD",
      "description": "A vertex is qualified as a corner if the angle spanned by its two edges is larger than the supplementary angle of this threshold value.",
      "origin": "declared"
    },
    {
      "name": "distance_threshold",
      "annotation": "PositiveFloat | None",
      "default": "None",
      "description": "If not `None` and the distance of the vertex to its neighboring vertices is below the threshold value based on Douglas-Peucker algorithm, the vertex is disqualified as a corner.",
      "origin": "declared"
    },
    {
      "name": "concave_resolution",
      "annotation": "PositiveInt | None",
      "default": "None",
      "description": "Specifies number of steps to use for determining `dl_min` based on concave featues.If set to `None`, then the corresponding `dl_min` reduction is not applied.",
      "origin": "declared"
    },
    {
      "name": "convex_resolution",
      "annotation": "PositiveInt | None",
      "default": "None",
      "description": "Specifies number of steps to use for determining `dl_min` based on convex featues.If set to `None`, then the corresponding `dl_min` reduction is not applied.",
      "origin": "declared"
    },
    {
      "name": "mixed_resolution",
      "annotation": "PositiveInt | None",
      "default": "None",
      "description": "Specifies number of steps to use for determining `dl_min` based on mixed featues.If set to `None`, then the corresponding `dl_min` reduction is not applied.",
      "origin": "declared"
    },
    {
      "name": "attrs",
      "annotation": "dict",
      "default": "factory: dict",
      "description": "Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, `attrs` are mutable. For example, the following is allowed for setting an `attr` `obj.attrs['foo'] = bar`. Also note that Tidy3D will raise a `TypeError` if `attrs` contain objects that can not be serialized. One can check if `attrs` are serializable by calling `obj.model_dump_json()`.",
      "origin": "inherited"
    }
  ],
  "members": [
    {
      "name": "corners",
      "kind": "function",
      "signature": "corners(normal_axis: Axis, coord: float, structure_list: list[Structure], center: tuple[float, float, float] = [0, 0, 0], size: tuple[float, float, float] = [inf, inf, inf], interior_disjoint_geometries: bool = False, keep_metal_only: bool = False)",
      "description": "On a 2D plane specified by axis = `normal_axis` and coordinate `coord`, find out corners of merged geometries made of `medium`."
    }
  ],
  "group": "flex_rf.tidy3d"
}
