두 벡터 사이를 선형 보간하는 방법은 무엇입니까?


16

클라이언트가 어디에 있고 어디로 가고 있는지 속도 벡터가 있으며 서버에서 클라이언트와 동일한 위치를 알려주는 동일한 벡터가 있습니다. 때로는 약간 다르므로 현재 위치와 서버의 올바른 위치 사이를 보간하고 싶습니다.

여기에 이미지 설명을 입력하십시오

검은 색 화살표는 클라이언트 속도 벡터이고 빨간색 화살표는 서버의 클라이언트 속도 벡터이며 파란색 화살표는 계산하고 보간하려는 것입니다.

파란색 벡터는 어떻게 계산합니까? 그렇다면 어떻게 그들 사이에 선형 보간을 할 수 있습니까?

답변:


18

파란색 벡터는 쉽게 계산할 수 있습니다. 빨간색-검은 색 (벡터 사이의 부호는 빼기). 그러나 검은 색과 빨간색 벡터 사이를 보간하려는 경우 계산할 필요가 없습니다. 선형 보간은 단지 선형 조합입니다. 따라서 알파 * 검정 + (1-알파) * 빨간색을 취할 수 있습니다. 여기서 알파는 <0,1> 간격이어야합니다. 알파가 1이면 알파 벡터가되고 알파가 0이면 빨간 벡터가 나타납니다.

내가 제대로 이해했다면,이 벡터들 사이를 시간 내에 보간 할 것입니다. 따라서 시간에 따라 적절한 알파 증분을 선택하십시오.

내가 잘 이해 했습니까? 아니면 완전히 다른 것을 의미 했습니까?


예, 당신은 저를 맞았습니다. 질문 하나만 더하면 벡터의 숫자를 어떻게 곱합니까? 그 작업으로 새로운 벡터가 나옵니까? 예를 들어, 빨강은 길이가 8 인 벡터 (0, 10)이고 검정은 길이가 4 인 (-2, 5)입니다. 알파 * 검정 또는 (1-알파) * 빨강은 어떻게합니까? 감사합니다.
gmemario

각 벡터 좌표를 개별적으로 곱하면됩니다. 알파가 예를 들어 0.5이면 alpha * black + (1-alpha) * red = (0,5) + (-1, 2.5) = (-1, 7.5)-이걸 종이에 그리면 실제로 두 벡터 사이에있는 것을 볼 수 있습니다.
zacharmarz

10

이 사진 찍기 :

여기에 이미지 설명을 입력하십시오

AB는 A에서 B까지의 빨간 벡터입니다.

P가 A에서 B로가는 길의 25 %라고 가정합니다. 원점에서 P로가는 기본 방법은

A + ( B - A ) / 4
= 3/4 A   +   B / 4

따라서 3/4 A와 1/4 B.

또 다른 방법은 A에 75 % "가까운"벡터와 B에 25 % "가까운"벡터를 원한다는 것입니다 (A에 100 % "가까운"벡터는 A 벡터 일뿐입니다).

따라서 P를 다음과 같이 찾을 수도 있습니다.

A*t + (1-t)*B

t = 0.75로 (75 %가 A에 가깝다)

0.75A + 0.25B

따라서 Vector3f 클래스의 C에서 간단한 LERP 함수는 다음과 같습니다.

static Vector3f lerp( const Vector3f& A, const Vector3f& B, float t ){
  return A*t + B*(1.f-t) ;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.