>  기사  >  백엔드 개발  >  회전 캘리퍼스 방법을 사용하여 좌표 평면의 두 점 사이의 최대 거리를 계산합니다.

회전 캘리퍼스 방법을 사용하여 좌표 평면의 두 점 사이의 최대 거리를 계산합니다.

王林
王林앞으로
2023-09-12 09:33:04514검색

C++에는 모든 숫자의 제곱근을 반환하는 사전 정의된 함수 sqrt가 있습니다. 회전 캘리퍼스 방법은 알고리즘이나 계산 기하학을 해결하는 데 사용되는 기술입니다.

회전 캘리퍼스 방법의 시각적 표현

손 회전은 손이 회전할 때마다 수직 방향을 보여주는 회전 캘리퍼 플롯의 실제 예를 보여줍니다. 우리는 또한 다각형을 사용하여 이 개념을 이해할 수 있습니다.

회전 캘리퍼스 방법을 사용하여 좌표 평면의 두 점 사이의 최대 거리를 계산합니다.

이 기사에서는 회전 캘리퍼스 방법을 사용하여 두 좌표점 사이의 최대 거리를 구하겠습니다. 跨度>

문법

다음 구문은 프로그램에서 사용됩니다 -

으아악

매개변수

  • Vectors - C++에서 키워드 벡터로 시작하고 벡터를 초기화합니다.

  • datatype - 벡터로 표현되는 데이터 요소의 유형입니다.

  • name - 벡터의 이름입니다.

알고리즘

  • 헤더 파일 iostream, vectorcmath를 사용하여 프로그램을 시작합니다.

  • 우리는 xy 좌표를 저장할 구조 이름 포인트를 생성하고 있습니다.

  • 두 좌표점 사이의 거리를 계산하기 위해 이중 데이터 유형 distance()의 함수 정의를 정의하고 있습니다. 여기서 Points p1Point p2는 미리 정의된 함수 sqrt와 거리 공식을 사용하여 좌표값과 거리를 반환하는 매개변수입니다.

  • 우리는 이중 데이터 유형이 매개변수 Point p1, Point p2 및 Point p3를 허용하여 외적 벡터(예: p2-p1 b> 및 p3-p1)를 계산하는 CP()라는 함수 정의를 정의합니다. w.r.t x 및 y 좌표.

  • 이제 인수를 점 벡터로 사용하고 두 좌표 평면 사이의 거리를 최대화하는 이중 데이터 유형 rotatingCaliper()의 함수 정의를 만들고 있습니다.

  • 최대 거리 계산을 만족시키기 위해 추적할 변수 결과를 0으로 초기화합니다. 점의 크기를 찾기 위해 size()라는 미리 정의된 함수를 사용하고 이를 변수 n에 저장합니다.

  • 두 변수 jk를 1로 초기화하고 다음을 수행합니다. -

    • 우리는 다각형의 다음 점으로 j 이동하고 있으며 외적 CP i+1] % n' 현재 가장자리 'points[i], points[ 및 다음 가장자리 'points [ j]'는 현재 간선 'points[i]', points[ (i + 1) % n]' 및 점 [(j + 1) 뒤의 다음 점 '의 외적 CP보다 작습니다. % n]' 가장자리. 이렇게 하면 현재 가장자리가 다음 가장자리에 수직인지 확인됩니다.

    • 현재 점 '점[i]'과 다음 점 '점[k]' 사이의 거리가 현재 점 '점보다 작을 때까지 다각형의 다음 점으로 k을 이동합니다. [ i]' 사이의 거리 ''와 다음 점 뒤의 점

      '점[(k+1)%n]. 그러면 다음 점이 현재 점에서 가장 멀리 떨어져 있는지 확인됩니다.
    • 이제 우리는 점 j, k,과 현재 점 'point[i]' 사이의 거리를 계산하고 이 모든 점을 곱한 다음 result

      변수에서 최대값을 얻습니다.
  • 주 함수를 시작하고 좌표 평면의 값을 "벡터 점"

    변수에 적용합니다.
  • 마지막으로 함수 이름 rotatingCaliper()를 호출하고 'points'

    값을 매개변수로 전달하여 회전하는 캘리퍼스 플롯의 최대 거리를 얻습니다.

이 프로그램에서는 회전 캘리퍼 방법을 사용하여 좌표 평면에서 두 점 사이의 최대 거리를 수행합니다.

으아악

출력

으아악

결론

두 좌표점 사이의 최대 거리를 계산하여 회전 캘리퍼 방식의 개념을 이해합니다. 이 방법의 실제 적용에는 조리개 각도 최적화, 기계 학습 분류 등이 포함됩니다. 🎜

위 내용은 회전 캘리퍼스 방법을 사용하여 좌표 평면의 두 점 사이의 최대 거리를 계산합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제