반응형
선 세그먼트를 특정 거리만큼 확장
라인 세그먼트를 특정 거리만큼 확장할 수 있는 방법을 찾고 있습니다.예를 들어, 10, 10에서 20, 13으로 시작하는 라인 세그먼트가 있는데 길이를 3까지 확장하려면 어떻게 새 끝점을 계산해야 합니까?이 예제 10.44에서 길이를 sqrt(a^2 +b^2)만큼 얻을 수 있습니다. 그렇다면 길이가 13.44인 10,10의 새 끝점을 알고 싶다면 계산적으로 가장 빠른 방법은 무엇입니까?저도 경사를 알고 있지만 이런 경우에 도움이 될지 모르겠습니다.
선분의 단위 벡터를 찾아 원하는 길이로 축척한 다음 이 벡터를 사용하여 선분의 끝점을 변환하면 됩니다.선분 끝점이 다음과 같다고 가정합니다.A
그리고.B
엔드포인트 이후에 확장하려는 경우B
(및lenAB
선분 길이)입니다.
#include <math.h> // Needed for pow and sqrt.
struct Point
{
double x;
double y;
}
...
struct Point A, B, C;
double lenAB;
...
lenAB = sqrt(pow(A.x - B.x, 2.0) + pow(A.y - B.y, 2.0));
C.x = B.x + (B.x - A.x) / lenAB * length;
C.y = B.y + (B.y - A.y) / lenAB * length;
경사가 이미 있는 경우 새 점을 계산할 수 있습니다.
x = old_x + length * cos(alpha);
y = old_y + length * sin(alpha);
오랜만에 하는 일이니 조금만 참아주세요.
저는 이것을 직접 검색한 후 우연히 발견했습니다. 즉시 사용할 수 있는 솔루션을 제공하기 위해 표준 Vector 클래스 내의 코드를 보고 필요한 부분을 선택할 수 있습니다. 하지만 저는 하나를 사용하게 되었고 코드는 다음과 같습니다.
vector.set(x,y);
vector.normalize();
vector.multiply(10000);// scale it by the amount that you want
행운을 빕니다.
언급URL : https://stackoverflow.com/questions/7740507/extend-a-line-segment-a-specific-distance
반응형
'programing' 카테고리의 다른 글
양식 인증과 Windows 인증 혼합 (0) | 2023.08.04 |
---|---|
Spring MVC의 @RequestParam에 대한 사용자 지정 변환기 (0) | 2023.08.04 |
오레오에 알림이 표시되지 않음 (0) | 2023.08.04 |
'자산' 폴더에서 sdcard로 파일을 복사하는 방법은 무엇입니까? (0) | 2023.08.04 |
Powershell에서 OS 버전, Linux 및 Windows 확인 (0) | 2023.08.04 |