Kąt nachylenia prostej do osi X

0

Wiem że to raczej średnio z programowaniem związane ale wśród programistów są dobrzy matematycy.

Mam dwa punkty A(x1, y1) B(x2, y2). I jest mi potrzebny kąt nachylenia prostej przechodzącej przez te dwa punkty do osi X.

Znaleźć równanie prostej to nie problem, a współczynnik kierunkowy a jest równy tangensowi kąta nachylenia. I tu pojawia się moje pytanie. Czy Jest jakiś inny sposób na wyliczenie tego kąta czy muszę użyć arcus tangensa.

jak zły dział to przepraszam ale nie wiedziałem gdzie umieścić ten temat.

0

Możesz użyć, np. funkcji arcus sinus.

0
Tangiens=(y2-y1)/(x2-x1);
Kąt=atan2(y2-y1,x2-x1);
0

Dobra widzę, że w komentarzach pojawiła się dyskusja po co mi ten kąt. Otóż ten kąt jest mi potrzebny do funkcji glRotatef.

Mam Obiekt 2D i rysuję go w ten sposób:

glPushMatrix();
  glTranslatef(fCenterX, fCenterY, 0);
  glRotatef(fAngle, 0, 0, 1);
  glBindTexture(GL_TEXTURE_2D, texture);
  glBegin(GL_POLYGON);
    glTexCoord2f(0, 0); glVertex3f(-fWidth / 2, -fHeight / 2, 0);
    glTexCoord2f(1, 0); glVertex3f( fWidth / 2, -fHeight / 2, 0);
    glTexCoord2f(1, 1); glVertex3f( fWidth / 2,  fHeight / 2, 0);
    glTexCoord2f(0, 1); glVertex3f(-fWidth / 2,  fHeight / 2, 0);
  glEnd();
glPopMatrix;

I chcę by obiekt odwracał się "twarzą" tj. górną krawędzią do kursora myszy. Do tego jest mi potrzebny kąt (fAngle) między prostą przechodzącą przez punkt środka obiektu (fCenterX, fCenterY) a punkt w którym znajduje się kursor myszy (MouseX, MouseY). Chyba, że źle podchodzę do problemu.

0

Nie.To tak nie działa. Z wykresu funkcji Arcus tangens widać, że "twarz" obiektu nie będzie podążać za myszką i rzeczywiście nie podąża.

fAngle := - RadToDeg(arctan2(MouseY, MouseX));

Nie mam pojęcia jak wyliczyć ten kąt. Bo nawet jak bym wziął poprawkę i na każdej ćwiartce układu używał innego wzoru to i tak nie osiągnę tego co chcę. Ktoś ma jakiś pomysł?</del>

Kretyn ze mnie.

0

Współrzędne OpenGL są inne niż współrzędne myszki uzyskane z callbacków glutKeyboardFunc, glutMouseFunc, glutMotionFunc i glutPassiveMotionFunc I trzeba je przeliczyć za pomocą gluProject/gluUnProject. Ponieważ ja pracuję nad silnikiem 2D to nie jest mi to do niczego potrzebne. Pozbyłem się bufora głębi i zastosowałem Ortho2D więc współrzędne mam od razu takie jak trzeba. Minus jest taki, że jestem uzależniony od rozdzielczości.

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