Python과 Numpy는 원의 지점과 직선 사이의 최소 거리를 해결합니다.
이 기사에서는 Python 및 Numpy 라이브러리를 사용하여 3 차원 공간의 원의 지점 사이의 최소 거리를 계산하고 그 지점의 좌표를 제공하는 방법을 살펴 봅니다. 우리는 원이 직선을 가진 coplanar가 아닌 상황을 다룰 것입니다.
문제 설명
원의 중심은 o = (0.3501, -0.0881, -4.8466)
, 정상 벡터 n = (0.4163, -0.8326, -0.3653)
, 원 r = 1.34954
, 그리고 두 지점 a = (3.1932, -0.9005, 0.8082)
및 b = (1.9885, -0.9691, -0.8353)
라인. 목표는 원에서 점 p
찾고 직선 ab
까지의 거리를 최소화하고 p
의 좌표를 계산하는 것입니다.
알고리즘 원리
원과 직선은 코플라나가 아닐 수 있기 때문에 최소 거리는 중심에서 직선까지 수직 거리가 아닙니다. 우리는 다음을 필요로합니다.
- 직선의 방향 벡터를 계산합니다.
b - a
에 의해 획득. - 직선의 방향 벡터를 계산하십시오. 단위 방향 벡터를 얻기 위해 정규화하십시오.
- 원의 중앙에서 직선까지 거리 벡터를 계산하십시오. 원의 중앙에서 직선의 점으로 벡터를 찾아 직선의 방향 벡터에 투사하여 원의 중앙에서 직선까지의 거리를 얻으십시오.
- 원의 중심에서 수직 발로 벡터를 계산하십시오. 3 단계의 결과를 사용하여 원의 중심에서 수직 발로 벡터를 계산하십시오.
- 원의 중심에서 선에 수직 인 평면의 선의 수직 발로 벡터의 투영을 계산하십시오. 이 프로젝션 벡터는 선에 가장 가까운 원의 지점을 가리 킵니다.
- 원의 가장 가까운 지점을 계산하십시오 : 투영 벡터를 정규화하고 원의 반경을 곱한 다음 직선의 수직 발에 추가하여 원에서 가장 가까운 지점의 좌표를 얻습니다.
파이썬 코드 구현
Numpy를 NP로 가져옵니다 # 데이터 입력 o = np.array ([0.3501, -0.0881, -4.8466]) n = np.array ([0.4163, -0.8326, -0.3653]) r = 1.34954 a = np.array ([3.1932, -0.9005, 0.8082]) b = np.array ([1.9885, -0.9691, -0.8353]) # 직선 방향 계산 벡터 v = b- a v = v / np.linalg.norm (v) # 정규화 # 벡터 계산 OA = o -a # 원의 중심에서 직선까지의 거리를 계산합니다 d = np.dot (OA, V) # 수직 발 F = ad * V 계산 # 원의 중앙에서 발의 풋 풋까지 벡터를 계산합니다. # 직선에 수직 인 평면에 투사 된 벡터를 -np.dot (of, v) * v에 수직으로 계산합니다. # 원의 가장 가까운 지점을 계산하면 p = fr * proj / np.linalg.norm (proj) print ( "원의 선에 가장 가까운 지점의 좌표는 다음과 같습니다.", p)
코드 설명
코드는 위의 알고리즘 단계를 명확하게 구현합니다. numpy
라이브러리는 효율적인 벡터 작업을 제공하고 계산 프로세스를 단순화합니다. 최종 출력은 원의 지점 p
의 좌표이며,이 점에서 선 ab
까지의 거리는 가장 작습니다.
이 개선 된 버전은 더 간결하고 효율적이며 알고리즘 단계에 대한 명확한 설명을 제공합니다.
위 내용은 Python and Numpy를 사용하여 원의 한 지점에서 직선까지 가장 짧은 거리를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
