Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[OpenGL] Interpolacja punktów

Ostatnio zmodyfikowano 2015-01-17 16:22
Autor Wiadomość
wiktor12348
Temat założony przez niniejszego użytkownika
[OpenGL] Interpolacja punktów
» 2015-01-17 13:29:24
Witam,

Nie wiem czy to tak się nazywa bo to termin bardziej związany z wykresami w matlabie.

Mam obiekt w postaci "mapy", i trasę przejazdu. Mogę sobie pobrać punkty związane z tzw ścianami w "trasie", gdy obiekt się zbliży zbyt blisko punktu po prostu się zatrzyma. Punktów mogę pobrać dość dużo, ale ale są zbyt daleko siebie, uwaga: są na jednej płaszczyźnie. Musze je "uzupełnić", wiem że są funkcje matematyczne które mi to zrobią. W matlabie na pewno jak podam punkty na przegięciach wykresu to resztę sobie "dorobi". Chodzi mi o podobne rozwiązanie tylko że w c++ :-)

Jak widać nie umiem się posługiwać terminologia fachową więc mam problem z szukaniem.

Taki mały obrazek poglądowy (mało profesjonalny).

CZARNE punkty - punkty które pobiorę z modelu trasy
CZERWONE punkty - punkty które wygenerują się.
P-125090
DejaVu
» 2015-01-17 15:12:11
1. Weź dwa punkty między którymi chcesz dostawić kolejne.
2. Oblicz różnicę współrzędnych między nimi (aby mieć delta.x i delta.y)
3. Potem oblicz współrzędne nowego punktu interpolacją liniową:
C/C++
float fInterpolacja = 0.5f; //Wartość z przedziału 0.0f do 1.0f
nowyPunkt.x = punkt1.x + delta.x * fInterpolacja;
nowyPunkt.y = punkt1.y + delta.y * fInterpolacja;
Innymi słowy:
C/C++
Punkt interpolacjaLiniowa( const Punkt & _p1, const Punkt & _p2, float _fInterpolacja )
{
    // Obliczamy odległość między punktami w osiach X i Y:
    Punkt delta;
    delta.x = _p2.x - _p1.x;
    delta.y = _p2.y - _p1.y;
   
    // Obliczamy położenie punktu pośredniego stosując interpolację liniową:
    Punkt wynik;
    wynik.x = _p1.x + delta.x * _fInterpolacja;
    wynik.y = _p1.y + delta.y * _fInterpolacja;
    return wynik;
}
Potem wywołanie:
C/C++
int main()
{
    Punkt punkt1( 50, 50 );
    Punkt punkt2( 100, 200 );
    Punkt punktPosredni = interpolacjaLiniowa( punkt1, punkt2, 0.5f );
    return 0;
}
P-125095
wiktor12348
Temat założony przez niniejszego użytkownika
» 2015-01-17 15:44:24
Nie sądziłem że to takie banalne. Dziękuje bardzo.

Takie małe dywagacje nie na temat.
Skoro cpp0x jest serwisem z tutkami na temat programowania i to bardzo fajnie opisanym. Może by tak zebrać "do kupy" gotowe rozwiązania, własnie do takich prostych rzeczy. Niby nic ale ja byłem zbyt leniwy by takie coś wyskrobać.
P-125098
DejaVu
» 2015-01-17 16:22:02
Forum jest zbiorem takich rozwiązań. Dlatego dążymy do tego aby je poprawnie nazywać oraz stosujemy politykę jeden temat = jeden problem. Spora część tematów jest kasowana z wyników wyszukiwania przez naszych administratorów po to, aby łatwiej się znajdowało tematy zawierające użyteczne informacje.
P-125100
« 1 »
  Strona 1 z 1