Cześć!
Mam problem z rozwiązaniem zadania. Schematycznie przedstawiłem je na rysunku. Muszę zaznaczyć, że kod jest wykorzystywany do przekazywania zmiennych do programu obliczeniowego, więc nie ma to za zadanie działać samodzielnie ergo raczej nie można korzystać z bibliotek dodatkowych.
Mam skończoną powierzchnię (tutaj 4x3 mm) muszę zadać taką trajektorię ruchu okręgu zielonego, aby poruszał się on po okręgu narysowanym linią przerywaną. Musi wykonać 35 obrotów na minutę (RPM) co jest równe ~3,6652 (rad/s). Dodatkowo, okrąg zielony nie jest zdefiniowany a liczony w locie (a raczej jego promień) - jest on odpowiedzialny za utrzymywanie "w ryzach" strumienia ciepła. Kod odpowiedzialny za wytyczanie geometrii okręgów:
(...)
float t1, omega, xcent=0.002, ycent=0.0015, rcirc=0.0007, rad,speed; /*omega - kąt; xcent, ycent - współrzędne środka dla koła dużego; rcirc - promień koła dużego; speed2 - prędkość w stopniach/s; rad - zmienna do przeliczania na radiany, speed - prędkość */
x = tab[0]; /*koordynaty - w każdym kroku czasowym cała powierzchnia jest "przeczesywana" a wartości x, y, z są uaktualniane*/
y = tab[1];
z = tab[2];
t1 = CURRENT_TIME; /* aktualny czas w s*/
omega=3.6652*t1;
dx=xcent+cos(omega)*rcirc; /*dx i dy zwracają koordynaty(?) x i y*/
dy=ycent+cos(omega)*rcirc;
prom =sqrt(pow((x-dx),2)+pow((y-dy),2));
(...)
if (prom <= r)
{
HS=10e12;
}
else
{
HS=0;
}
}
Problem jest z tym, że w programie docelowym zielony okrąg zamiast po trajektorii okręgu większego porusza się po jego średnicy :/ W kodzie jest zapewne jakiś niewielki błąd, którego nie potrafię wyłapać sam. Byłbym wdzięczny za jakieś podpowiedzi.