Poprawienie wzoru na obrót po okręgu wokół punktu

0

Witam! Już przebrnąłem z grubsza przez funkcje trygonometryczne i rozumiem co i jak. Napisałem sobie wzór na kartce z rysunkiem razem na obrót obiektu wokół punktu po okręgu. Niby obraca, ale też oddala obiekt (kamerę) od obiektu. Mógłby ktoś spojrzeć i powiedzieć co jest nie tak? Jakby ktoś miał 2 minutki to sobie niech to rozrysuje. Dodam, że korzystam z układu XYZ, gdzie Y to pion i dlatego zamiast Y korzystam z osi Z. Wzory daje w 2 postaciach: kod i to co na kartce + rysunek.
Kartka:

a = sin(alfa/2) * R * 2;
beta = (180 - alfa) / 2
x = sin(beta) * a;
y = cos(beta) * a; (w sensie Z)
// i potem do punktu B dodaję x i y

Kod:

public void MoveAround(int direction)
		{
			float alfa = direction / (Math.Abs(direction)) * moveSpeed;
			float a = (float)(Math.Sin(MathHelper.ToRadians(alfa / 2)) * Math.Sqrt(Math.Pow(Math.Abs(position.X - lookAt.X), 2)
                                       + Math.Pow(Math.Abs(position.Z - lookAt.Z), 2)) * 2);
			float beta = (180 - alfa) / 2;
			position.X += (float)(Math.Sin(MathHelper.ToRadians(beta) * a)); // tu od razu dodaję x...
			position.Z += (float)(Math.Cos(MathHelper.ToRadians(beta) * a)); // ...i y (w sensie Z)
		}

Rysunek:
user image

Był bym bardzo wdzięczny za pomoc.

1

twoje wzory są jakieś dziwne. obrót wokół środka układu współrzędnych to:

x'=x\cos\theta - y\sin\theta\<br> y'=x\sin\theta + y\cos\theta

0

wzorów nie sprawdzałe, ale w funkcji przesuwającej masz += przy x i z a według mnie powinno być samo =

0

Dobra działa, ale oddala jak moveSpeed jest 100 np. a przybliża jak mniej np. 1 czy 10 ;/

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