평균 포인트 주변의 포인트 배열에서 균일 한 스케일링 C ++

페트라

내가하려는 것 :

1. 점 주위의 점 배열을 균일하게 조정합니다. 2. 포인트는 포인트 배열의 평균 포인트 여야합니다.

아래 코드는 작동하는 것 같지만 적절한 방법인지 모르겠습니다.

균일 스케일링은 단순히 포인트에 어떤 값을 곱한다는 것을 알고 있지만 이것은 0,0,0 포인트에서 스케일링하는 것입니다. 평균 포인트 주변에서 어떻게 수행합니까?

코드는 다음 단계로 세분화 할 수 있습니다.

  1. 모든 위치를 합산하고 포인트 수로 나누어 포인트 배열의 평균 포인트를 가져옵니다.
  2. 비율은 스케일링 값입니다.
  3. 그런 다음 벡터 빼기를 수행하여 점에서 평균 점으로 가리키는 벡터를 얻습니다.
  4. 나는 그 벡터를 정규화합니다 (나는 단위 벡터를 얻습니다)
  5. 그런 다음 정규화 된 벡터를 (1-비율) * 0.5를 곱한 현재 점에 추가합니다.

이 마지막 비트 5 번째 포인트는 값의 전체 길이를 확인한 결과입니다.

내가 전에 생각 해낸 모든 예제는 수학에서 행렬을 사용하는 것이었고 행렬 연산을 읽을 수 없었습니다.

올바른 균일 스케일링 방법입니까, 그렇지 않으면 내가 뭘 잘못하고 있는지 지적 할 수 있습니까?

    //Get center of a curve 
    //That is average of all points


    MatMxN curveCenter = MatMxN::Zero(2, 1); //This is just 1 vector/point with x and y coordinates

    for (int i = 0; i < n; i++)
        curveCenter += points.col(i);

    curveCenter /= n;

    //Scaling value
    float ratio = 1.3;

   //Get vector pointing to center  and move by ratio
    for (int i = 0; i < n; i++) {
        MatMxN vector = curveCenter - points.col(i);
        MatMxN unit = vector.normalized();
        points.col(i) += unit*(1 - ratio)*0.5; //points.col(i) this is point in array
    }
그리스 40

특정 중심점 ( 0 이외 )을 사용하여 점을 축척 하려면 다음 단계를 따르십시오.

  1. 점에서 중심 빼기 MatMxN vector = points.col(i) - curveCenter;
  2. 배율 인수로 벡터 곱하기 vector *= ratio
  3. 축척 된 벡터에 중심을 추가하여 새 점을 얻습니다. points.col(i) = vector + curveCenter

이 접근 방식은 공식과 원격으로 유사한 것으로 해결할 수 있습니다. 센터 C, P0스케일링 할 포인트 P1, 스케일링 된 포인트 및 스케일링 계수를 호출 해 보겠습니다 s. 위의 3 단계는 다음과 같이 작성할 수 있습니다.

v0 = P0 - C
v1 = s * v0
P1 = v1 + C

=>

P1 = s * P0 + C * (1 - s)

이제 우리 P1 = P0 + x는 일부를 정의 합니다 x.

P0 + x = s * P0 + C * (1 - s)

=>

x = s * P0 + C * (1 - s) - P0
  = C * (1 - s) - P0 * (1 - s)
  = (C - P0) * (1 - s)

따라서 언급 된 3 단계를 사용하는 대신 다음과 같이 업데이트를 작성할 수 있습니다.

MatMxN vector = curveCenter - points.col(i);
points.col(i) += vector * (1 - ratio);

그러나 원래 단계에 더 가깝고 직관적으로 이해하기 쉽기 때문에 뺄셈을 반대로 쓰는 것을 선호합니다.

MatMxN vector = points.col(i) - curveCenter;
points.col(i) += vector * (ratio - 1);

정규화와 *0.5아이디어를 어디에서 찾았는지 모르겠습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

R의 균일 한 플롯 포인트-연구 / HW

분류에서Dev

SQL / LookerML에서 고유 한 데이터 포인트가있는 일련의 날짜에서 평균 개수를 측정하는 방법

분류에서Dev

동일한 차트에 일일 값과 주간 평균을 표시

분류에서Dev

동일한 차트에 일일 값과 주간 평균을 표시

분류에서Dev

RavenDB 인덱스의 일부 감소, 평균 계산에 대한 구문 질문

분류에서Dev

포인트 클라우드 데이터에 대한 K- 평균 클러스터링

분류에서Dev

텍스트 파일 C #에서 평균 계산

분류에서Dev

MATLAB에서 연속적인 동일한 값 요소의 평균 수 찾기

분류에서Dev

다른 열의 각 고유 값에 대한 최신 데이터 포인트 30 개의 평균

분류에서Dev

스크립트에서 가져온 파일 라인의 평균 찾기

분류에서Dev

텍스트 파일의 평균 찾기

분류에서Dev

Python : 동일한 지점에서 평균과 표준 편차가 다른 다변량 정규 분포 평가

분류에서Dev

숫자 쌍의 한 인덱스 평균

분류에서Dev

포인트 클라우드에서 포인트의 평균 거리를 계산하는 방법

분류에서Dev

하이트 맵의 일반 평균

분류에서Dev

C의 char 배열에서 char 포인터 (포인트)에 동일한 값을 복사하려면 어떻게해야합니까?

분류에서Dev

R에서 1000 개의 서로 다른 모양 및 스케일 값으로 잘린 감마 분포에서 1000 개의 샘플 포인트 평균을 빠르게 생성

분류에서Dev

비 균일 쿼리 포인트에 interp1 사용

분류에서Dev

특정 조건에서 동일한 열의 평균 값 (SQL Server)

분류에서Dev

여러 CSV 파일에서 한 열의 평균 계산

분류에서Dev

열의 평균을 계산 한 다음 선택 쿼리에 포함하는 방법 Google 스프레드 시트

분류에서Dev

R : 데이터 포인트가 3 개 이상인 가장 높은 평균 10 개에 대한 데이터 세트 필터링

분류에서Dev

그룹의 모든 열이 R에서 균일한지 확인

분류에서Dev

동일한 테스트의로드 러너에 비해 jmeter 평균 응답 시간이 높은 이유

분류에서Dev

사용자가 지정한 연도의 평균 날씨 데이터를 텍스트 파일에 씁니다.

분류에서Dev

동일한 키의 평균 수를 계산하여 PHP에서 배열을 평평하게합니다.

분류에서Dev

여러 액세스 포인트에서 동일한 MAC 주소

분류에서Dev

정점 버퍼 바인딩 인덱스와 균일 한 버퍼 바인딩 포인트?

분류에서Dev

텍스트 파일의 데이터에서 평균을 내려면

Related 관련 기사

  1. 1

    R의 균일 한 플롯 포인트-연구 / HW

  2. 2

    SQL / LookerML에서 고유 한 데이터 포인트가있는 일련의 날짜에서 평균 개수를 측정하는 방법

  3. 3

    동일한 차트에 일일 값과 주간 평균을 표시

  4. 4

    동일한 차트에 일일 값과 주간 평균을 표시

  5. 5

    RavenDB 인덱스의 일부 감소, 평균 계산에 대한 구문 질문

  6. 6

    포인트 클라우드 데이터에 대한 K- 평균 클러스터링

  7. 7

    텍스트 파일 C #에서 평균 계산

  8. 8

    MATLAB에서 연속적인 동일한 값 요소의 평균 수 찾기

  9. 9

    다른 열의 각 고유 값에 대한 최신 데이터 포인트 30 개의 평균

  10. 10

    스크립트에서 가져온 파일 라인의 평균 찾기

  11. 11

    텍스트 파일의 평균 찾기

  12. 12

    Python : 동일한 지점에서 평균과 표준 편차가 다른 다변량 정규 분포 평가

  13. 13

    숫자 쌍의 한 인덱스 평균

  14. 14

    포인트 클라우드에서 포인트의 평균 거리를 계산하는 방법

  15. 15

    하이트 맵의 일반 평균

  16. 16

    C의 char 배열에서 char 포인터 (포인트)에 동일한 값을 복사하려면 어떻게해야합니까?

  17. 17

    R에서 1000 개의 서로 다른 모양 및 스케일 값으로 잘린 감마 분포에서 1000 개의 샘플 포인트 평균을 빠르게 생성

  18. 18

    비 균일 쿼리 포인트에 interp1 사용

  19. 19

    특정 조건에서 동일한 열의 평균 값 (SQL Server)

  20. 20

    여러 CSV 파일에서 한 열의 평균 계산

  21. 21

    열의 평균을 계산 한 다음 선택 쿼리에 포함하는 방법 Google 스프레드 시트

  22. 22

    R : 데이터 포인트가 3 개 이상인 가장 높은 평균 10 개에 대한 데이터 세트 필터링

  23. 23

    그룹의 모든 열이 R에서 균일한지 확인

  24. 24

    동일한 테스트의로드 러너에 비해 jmeter 평균 응답 시간이 높은 이유

  25. 25

    사용자가 지정한 연도의 평균 날씨 데이터를 텍스트 파일에 씁니다.

  26. 26

    동일한 키의 평균 수를 계산하여 PHP에서 배열을 평평하게합니다.

  27. 27

    여러 액세스 포인트에서 동일한 MAC 주소

  28. 28

    정점 버퍼 바인딩 인덱스와 균일 한 버퍼 바인딩 포인트?

  29. 29

    텍스트 파일의 데이터에서 평균을 내려면

뜨겁다태그

보관