Zdefiniuj zmienne typu float/double odpowiadające każdemu z podpunktów:
- x,y trójkąta, kąt oscylacji wokół środka ekranu
- kąt obrotu wokół własnego środka
- wartość koloru zielonego, wartość koloru niebieskiego
Domyślam się, ze korzystacie ze starego OpenGL i można wykorzystać funkcji glColor, glTranslate itd.
W pętli aplikacji piszesz:
1.
kat_oscylacji += czas_klatki * szybkosc_oscylacji;
x_trojkata = cos(kat_oscylacji w radianach) * promien_oscylacji;
y_trojkata = sin(kat_oscylacji w radianach) * promien_oscylacji;
glTranslated(x_trojkata, y_trojkata, 0.0);
kat_obrotu_wokol_srodka += (czas_klatki * szybkosc_oscylacji) / 3.0;
glRotated(kat_obrotu_wokol_srodka, 0.0, 0.0, 1.0);
niebieski += czas_klatki * szybkosc_zmiany_koloru;
if (niebieski>=1.0) niebieski = 1.0;
zielony = 1.0 - niebieski;
glColor4d(0.0, zielony, niebieski, 1.0);
Można wprowadzić jakiegoś boola. Po osiągnięciu 1.0 przez niebieski, można zmieniać kolor z powrotem do zielonego.
Dodatkowo powinieneś zabezpieczyć kąty, żeby nie zwiększały się w nieskończoność np. if (kat > 360.0) kat -= 360.0;
Pisane z palca, ale powinno dobrze pokazać jak dojść do oczekiwanego rezultatu.