Ruch okręgu względem drugiego okręgu

0

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.
user image
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.

3

Tak na pierwszy rzut oka to podejrzane jest że masz 2x funkcję cos().

Dlaczego podejrzane:
http://en.wikipedia.org/wiki/Euler%27s_identity

2

http://jsfiddle.net/0qzdp3nv/7/
w JS. Zmien sobie na C++

0

vpiotr - faktycznie... Chociaż już sam nie wiem czy to kopiowanie czy tak było ;-)
krwq dzięki za źródło na pewno się przyda :)

Edit:
Działa! :D Dzięki wielkie za pomoc :) Uszanowanie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1