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

王林
풀어 주다: 2023-09-12 09:33:04
앞으로
443명이 탐색했습니다.

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이동하고 있으며 외적CPi+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으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!