programing

선 세그먼트를 특정 거리만큼 확장

goodsources 2023. 8. 4. 23:02
반응형

선 세그먼트를 특정 거리만큼 확장

라인 세그먼트를 특정 거리만큼 확장할 수 있는 방법을 찾고 있습니다.예를 들어, 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

반응형