Matematyka i si

0

Potrzebuję pomocy. Mam dwa kwadraty w przestrzeni. Chcę żeby jeden kwadrat mógł sprawdzić, czy jest obrócony w stronę drugiego kwadratu. Jednak program nie wykonuje tego czego powinien, a do tego wyskakuje DOMAIN ERROR ACOS
Oto kod:

vec1.x = sin(desc->angle*3.14/180); // pozycja x wektora szukającego kwadratu
vec1.y = cos(desc->angle*3.14/180);// pozycja y wektora szukającego kwadratu
ciach[0] = sqrt(vec1.x*vec1.x + vec1.y*vec1.y); // długoś wektora

vec1.x /= ciach[0];
vec1.y /= ciach[0];// normaliacja wektora

object = GetObject(6); // pobranie wskaźnika drugiego kwadratu
vec2.x = pos->x - object->pos->x;
vec2.y = pos->y - object->pos->y; // znalezienie odległości między kwadratami
if(vec2.x<0)vec2.x*=-1; 
if(vec2.y<0)vec2.y*=-1; // jeśli ujemny zamiana na +   

ciach[1] = sqrt(vec2.x*vec2.x + vec2.y*vec2.y); // długośc wektora

vec2.x /= ciach[1];
vec2.y /= ciach[1]; // normalizacja 


angle = acos(vec1.x*vec2.x + vec1.y*vec2.y)/3.14 * 180; 
 // ^ wykonanie wzoru: arcos(x*x1 + y*y1), a następnie zamiana na zwykłę kąty 
if(angle<0){
        state.line.x=1; // obrót w prawo
        turn=1;
}
if(angle>0){
        state.line.x=-1; // obrót w lewo
        turn=1;
}
0

Chcę żeby jeden kwadrat mógł sprawdzić, czy jest obrócony w stronę drugiego kwadratu.

wyjasnij o co ci chodzi...
(kwadrat zawsze jest jakos obrocony w strone drugiego kwadratu [diabel])

  1. 'drobna' niejasnosc: napisales, ze oba kwadraty sa w przestrzeni, a w kodzie wykorzystujesz wektory na plaszczyznie...
  2. napisz jakie sa dane wejsciowe
0

Mam dwa kwadraty

                      []

[]

Chcę sprawdzić czy kwadrat położony wyżej jest skierowany w stronę dolnego. Wektor pierwszy jest skierowany w tą stronę w którą "patrzy" kwadrat położony wyżej. A drugi wektor ma początek w kwadracie wyżej, a koniec w kwadracie niżej. Żeby dane były odpowiednie normalizuje wektory. Teraz sprawdzam, jak musi się obrócić kwadrat wyżej położony żeby się skierował na tego niżej położonego.

0

Napisz o co Ci chodzi z tym 'kwadrat skierowany w stronę dolnego'. Dla mnie Twoje pytanie brzmi jak 'Czym się różni wróbelek?' a odpowiedź na nie 'Tym że ma jedną nóżkę bardziej'.

Rozumiem, że masz dwa kwadraty (dla uproszczenia przyjmijmy, że masz współrzędne ciężkości kwadratów, czyli ich 'środki') i chcesz coś stwierdzić o ich wzajemnym położeniu. Później zaczynasz wprowadzać nic nie znaczące pojęcia jak 'kwadrat patrzy', 'wektor ma początek w kwadracie', 'kwadrat ma się skierować/obracać' (liczba obiektów wokół, których taki kwadrat może się obracać jest dość duża...) Sprecyzuj o co Ci chodzi.

pzdr,
y.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.