[OpenGL] Interpolacja punktów
Ostatnio zmodyfikowano 2015-01-17 16:22
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ę. |
|
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ą: float fInterpolacja = 0.5f; nowyPunkt.x = punkt1.x + delta.x * fInterpolacja; nowyPunkt.y = punkt1.y + delta.y * fInterpolacja;
Innymi słowy: Punkt interpolacjaLiniowa( const Punkt & _p1, const Punkt & _p2, float _fInterpolacja ) { Punkt delta; delta.x = _p2.x - _p1.x; delta.y = _p2.y - _p1.y; Punkt wynik; wynik.x = _p1.x + delta.x * _fInterpolacja; wynik.y = _p1.y + delta.y * _fInterpolacja; return wynik; }
Potem wywołanie: int main() { Punkt punkt1( 50, 50 ); Punkt punkt2( 100, 200 ); Punkt punktPosredni = interpolacjaLiniowa( punkt1, punkt2, 0.5f ); return 0; }
|
|
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ć. |
|
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. |
|
« 1 » |