Solmis Opublikowano 30 Marca 2009 Udostępnij Opublikowano 30 Marca 2009 No wiec mam nietypowy problem. :P Cały kod się kompiluje i niby działa(http://www.nopaste.pl/ap4). Problem pojawia się, gdy: 1. Ustawiam myszka 10 trójkątów w różnych miejscach ekranu 2. Potem usuwam je przy pomocy RMB. 3. [Tu pojawia się błąd] Ponownie ustawiam 10 trójkątów przy użyciu myszki (LPM). Pierwszy trójkąt jest OK, ale gdy ustawie drugi to zmienia się pozycja pierwszego itd. :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 30 Marca 2009 Udostępnij Opublikowano 30 Marca 2009 sprawdź kod: void update() { CUSTOMVERTEX g_Vertices[] = { {(x[1]-x[1])*cos(angle[1])-(y[1]-100.0f-y[1])*sin(angle[1])+x[1], (x[1]-x[1])*sin(angle[1])+(y[1]-100.0f-y[1])*cos(angle[1])+y[1], 0.5f, 1.0f, 0xffff0000,}, {(x[1]+100.0f-x[1])*cos(angle[1])-(y[1]+100.0f-y[1])*sin(angle[1])+x[1], (x[1]+100.0f-x[1])*sin(angle[1])+(y[1]+100-y[1])*cos(angle[1])+y[1], 0.5f, 1.0f, 0xff622020,}, {(x[1]-100.0f-x[1])*cos(angle[1])-(y[1]+100.0f-y[1])*sin(angle[1])+x[1], (x[1]-100.0f-x[1])*sin(angle[1])+(y[1]+100-y[1])*cos(angle[1])+y[1], 0.5f, 1.0f, 0xff4C0E0E,}, {(x[2]-x[2])*cos(angle[2])-(y[2]-100.0f-y[2])*sin(angle[2])+x[2], (x[2]-x[2])*sin(angle[2])+(y[2]-100.0f-y[2])*cos(angle[2])+y[2], 0.5f, 1.0f, 0xffff0000,}, {(x[2]+100.0f-x[2])*cos(angle[2])-(y[2]+100.0f-y[2])*sin(angle[2])+x[2], (x[2]+100.0f-x[2])*sin(angle[2])+(y[2]+100-y[2])*cos(angle[2])+y[2], 0.5f, 1.0f, 0xff622020,}, {(x[2]-100.0f-x[2])*cos(angle[2])-(y[2]+100.0f-y[2])*sin(angle[2])+x[2], (x[2]-100.0f-x[2])*sin(angle[2])+(y[2]+100-y[2])*cos(angle[2])+y[2], 0.5f, 1.0f, 0xff4C0E0E,}, {(x[3]-x[3])*cos(angle[3])-(y[3]-100.0f-y[3])*sin(angle[3])+x[3], (x[3]-x[3])*sin(angle[3])+(y[3]-100.0f-y[3])*cos(angle[3])+y[3], 0.5f, 1.0f, 0xffff0000,}, {(x[3]+100.0f-x[3])*cos(angle[3])-(y[3]+100.0f-y[3])*sin(angle[3])+x[3], (x[3]+100.0f-x[3])*sin(angle[3])+(y[3]+100-y[3])*cos(angle[3])+y[3], 0.5f, 1.0f, 0xff622020,}, {(x[3]-100.0f-x[3])*cos(angle[3])-(y[3]+100.0f-y[3])*sin(angle[3])+x[3], (x[3]-100.0f-x[3])*sin(angle[3])+(y[3]+100-y[3])*cos(angle[3])+y[3], 0.5f, 1.0f, 0xff4C0E0E,}, {(x[4]-x[4])*cos(angle[4])-(y[4]-100.0f-y[4])*sin(angle[4])+x[4], (x[4]-x[4])*sin(angle[4])+(y[4]-100.0f-y[4])*cos(angle[4])+y[4], 0.5f, 1.0f, 0xffff0000,}, {(x[4]+100.0f-x[4])*cos(angle[4])-(y[4]+100.0f-y[4])*sin(angle[4])+x[4], (x[4]+100.0f-x[4])*sin(angle[4])+(y[4]+100-y[4])*cos(angle[4])+y[4], 0.5f, 1.0f, 0xff622020,}, {(x[4]-100.0f-x[4])*cos(angle[4])-(y[4]+100.0f-y[4])*sin(angle[4])+x[4], (x[4]-100.0f-x[4])*sin(angle[4])+(y[4]+100-y[4])*cos(angle[4])+y[4], 0.5f, 1.0f, 0xff4C0E0E,}, {(x[5]-x[5])*cos(angle[5])-(y[5]-100.0f-y[5])*sin(angle[5])+x[5], (x[5]-x[5])*sin(angle[5])+(y[5]-100.0f-y[5])*cos(angle[5])+y[5], 0.5f, 1.0f, 0xffff0000,}, {(x[5]+100.0f-x[5])*cos(angle[5])-(y[5]+100.0f-y[5])*sin(angle[5])+x[5], (x[5]+100.0f-x[5])*sin(angle[5])+(y[5]+100-y[5])*cos(angle[5])+y[5], 0.5f, 1.0f, 0xff622020,}, {(x[5]-100.0f-x[5])*cos(angle[5])-(y[5]+100.0f-y[5])*sin(angle[5])+x[5], (x[5]-100.0f-x[5])*sin(angle[5])+(y[5]+100-y[5])*cos(angle[5])+y[5], 0.5f, 1.0f, 0xff4C0E0E,}, {(x[6]-x[6])*cos(angle[6])-(y[6]-100.0f-y[6])*sin(angle[6])+x[6], (x[6]-x[6])*sin(angle[6])+(y[6]-100.0f-y[6])*cos(angle[6])+y[6], 0.5f, 1.0f, 0xffff0000,}, {(x[6]+100.0f-x[6])*cos(angle[6])-(y[6]+100.0f-y[6])*sin(angle[6])+x[6], (x[6]+100.0f-x[6])*sin(angle[6])+(y[6]+100-y[6])*cos(angle[6])+y[6], 0.5f, 1.0f, 0xff622020,}, {(x[6]-100.0f-x[6])*cos(angle[6])-(y[6]+100.0f-y[6])*sin(angle[6])+x[6], (x[6]-100.0f-x[6])*sin(angle[6])+(y[6]+100-y[6])*cos(angle[6])+y[6], 0.5f, 1.0f, 0xff4C0E0E,}, {(x[7]-x[7])*cos(angle[7])-(y[7]-100.0f-y[7])*sin(angle[7])+x[7], (x[7]-x[7])*sin(angle[7])+(y[7]-100.0f-y[7])*cos(angle[7])+y[7], 0.5f, 1.0f, 0xffff0000,}, {(x[7]+100.0f-x[7])*cos(angle[7])-(y[7]+100.0f-y[7])*sin(angle[7])+x[7], (x[7]+100.0f-x[7])*sin(angle[7])+(y[7]+100-y[7])*cos(angle[7])+y[7], 0.5f, 1.0f, 0xff622020,}, {(x[7]-100.0f-x[7])*cos(angle[7])-(y[7]+100.0f-y[7])*sin(angle[7])+x[7], (x[7]-100.0f-x[7])*sin(angle[7])+(y[7]+100-y[7])*cos(angle[7])+y[7], 0.5f, 1.0f, 0xff4C0E0E,}, {(x[8]-x[8])*cos(angle[8])-(y[8]-100.0f-y[8])*sin(angle[8])+x[8], (x[8]-x[8])*sin(angle[8])+(y[8]-100.0f-y[8])*cos(angle[8])+y[8], 0.5f, 1.0f, 0xffff0000,}, {(x[8]+100.0f-x[8])*cos(angle[8])-(y[8]+100.0f-y[8])*sin(angle[8])+x[8], (x[8]+100.0f-x[8])*sin(angle[8])+(y[8]+100-y[8])*cos(angle[8])+y[8], 0.5f, 1.0f, 0xff622020,}, {(x[8]-100.0f-x[8])*cos(angle[8])-(y[8]+100.0f-y[8])*sin(angle[8])+x[8], (x[8]-100.0f-x[8])*sin(angle[8])+(y[8]+100-y[8])*cos(angle[8])+y[8], 0.5f, 1.0f, 0xff4C0E0E,}, {(x[9]-x[9])*cos(angle[9])-(y[9]-100.0f-y[9])*sin(angle[9])+x[9], (x[9]-x[9])*sin(angle[9])+(y[9]-100.0f-y[9])*cos(angle[9])+y[9], 0.5f, 1.0f, 0xffff0000,}, {(x[9]+100.0f-x[9])*cos(angle[9])-(y[9]+100.0f-y[9])*sin(angle[9])+x[9], (x[9]+100.0f-x[9])*sin(angle[9])+(y[9]+100-y[9])*cos(angle[9])+y[9], 0.5f, 1.0f, 0xff622020,}, {(x[9]-100.0f-x[9])*cos(angle[9])-(y[9]+100.0f-y[9])*sin(angle[9])+x[9], (x[9]-100.0f-x[9])*sin(angle[9])+(y[9]+100-y[9])*cos(angle[9])+y[9], 0.5f, 1.0f, 0xff4C0E0E,}, {(x[10]-x[10])*cos(angle[10])-(y[10]-100.0f-y[10])*sin(angle[10])+x[10], (x[10]-x[10])*sin(angle[10])+(y[10]-100.0f-y[10])*cos(angle[10])+y[10], 0.5f, 1.0f, 0xffff0000,}, {(x[10]+100.0f-x[10])*cos(angle[10])-(y[10]+100.0f-y[10])*sin(angle[10])+x[10], (x[10]+100.0f-x[10])*sin(angle[10])+(y[10]+100-y[10])*cos(angle[10])+y[10], 0.5f, 1.0f, 0xff622020,}, {(x[10]-100.0f-x[10])*cos(angle[10])-(y[10]+100.0f-y[10])*sin(angle[10])+x[10], (x[10]-100.0f-x[10])*sin(angle[10])+(y[10]+100-y[10])*cos(angle[10])+y[10], 0.5f, 1.0f, 0xff4C0E0E,}, }; Tylko 10 wierzchołków ;) PS: nie doczytałem ale i tak: case WM_RBUTTONDOWN: if (triangles > 1) triangles -= 1; return 0; tylko odejmuje ale nie "czyści" indeksu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 30 Marca 2009 Udostępnij Opublikowano 30 Marca 2009 Napisz to normalnie to się pomyśli, makaronu nikt o zdrowych zmysłach rozplątywać nie będzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Solmis Opublikowano 30 Marca 2009 Autor Udostępnij Opublikowano 30 Marca 2009 Akurat przeglądanie wierzchołków możecie sobie darować bo są na 100% dobrze. Jeśli ktoś może niech sprawdzi, czy czegoś nie schrzaniłem przy x,y. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 31 Marca 2009 Udostępnij Opublikowano 31 Marca 2009 (x[8]-x[8])*sin(angle[8]) wut?, no dobra przyjmijmy, że x = 4 4 - 4 = 0 * sin(...); mnożenie zera/przez zero daje... zero... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Solmis Opublikowano 31 Marca 2009 Autor Udostępnij Opublikowano 31 Marca 2009 And? Wez idź z taka odpowiedzią. Mówiłem, ze w wierzchołkach się nie pomyliłem... >_> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 31 Marca 2009 Udostępnij Opublikowano 31 Marca 2009 Uważam, że to obliczenie jest nie potrzebne ( wynik = 0 ), bo każde obliczenie obciąża procesor. PS: na twoim miejscu ( no głównie z lenistwa ;] ), napisałbym se funkcje które zwróciły by te wszystkie elementy. double funkcja( int i ) { return (x[i]-x[i])*cos(angle[i])-(y[i]-100.0f-y[i])*sin(angle[i])+x[i]; } I łatwiej by ci było odnaleźć się w kodzie, i na bank byś rozwiązał dylemat ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Solmis Opublikowano 31 Marca 2009 Autor Udostępnij Opublikowano 31 Marca 2009 Juz uzyskałem odpowiedz na innym forum. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi