Skocz do zawartości

Rekomendowane odpowiedzi

Opis
Ten stock korzystając z pozycji (oldorigin) oraz zwrotu (angle) jakiegoś bytu, oblicza nam nową pozycję (neworigin) na podstawie podanego kąta (degree) oraz odległości (distance) jaki chcemy mieć między oldorigin a neworigin. Opcjonalny jest tutaj parametr height, dzięki któremu możemy dodatkowo określić relatywną wysokość od ziemi.

Stock

stock void CalculateOriginByDegree( float oldorigin[3], float angle[3], float neworigin[3], float degree, float distance, float height=0.0 )
{
	neworigin[0] = oldorigin[0] + Cosine( DegToRad( angle[1] + degree ) ) * distance;
	neworigin[1] = oldorigin[1] + Sine( DegToRad( angle[1] + degree ) ) * distance; 
	neworigin[2] = oldorigin[2] + height; 
}

 

Przykład #1
Mamy podany origin oraz angle jakiegoś bytu. Chcemy obliczyć origin który będzie stał o 90 stopni na prawo oraz w miarę blisko od oryginalnej pozycji.
Kod:

CalculateOriginByDegree( oldorigin, angle, neworigin, 90.0, 20.0 );

 

Przykład #2
Mamy podany origin oraz angle jakiegoś bytu. Chcemy obliczyć origin który będzie stał o 45 stopni na lewo oraz daleko od oryginalnej pozycji. Ponadto, chcemy by obliczona pozycja była nieco wyżej od oryginalnej
Kod:

CalculateOriginByDegree( oldorigin, angle, neworigin, -45.0, 150.0, 40.0 );

 

*Uprasza się o nie kopiowanie funkcji bez wcześniejszej zgody autora

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...