Podział okręgu na 8 wycinków i sprawdzenie, do którego wycinka należy punkt

Mathematica, Matlab, Statistica, LaTeX i wszelkiego rodzaju oprogramowanie przydatne matematykowi w pracy. Miejsca w sieci poświęcone zagadnieniu.
skyline85
Użytkownik
Użytkownik
Posty: 11
Rejestracja: 19 sty 2011, o 20:32
Płeć: Mężczyzna
Lokalizacja: Warszawa

Podział okręgu na 8 wycinków i sprawdzenie, do którego wycinka należy punkt

Post autor: skyline85 »

Witam serdecznie,

Chciałbym podzielić okrąg, o danym środku i promieniu, na 8 równych wycinków i następnie sprawdzić, do którego wycinka należy dany punkt.. Nie wiem jak to ugryźć..

Mam taki kod napisany w języku JavaScript:

Kod: Zaznacz cały

    private isPointInGivenCircleAngle(radius: number, pointInsideCircle: Point, startAngle: number, endAngle: number) {
        startAngle = startAngle * Math.PI / 180;
        endAngle = endAngle * Math.PI / 180;

        const polarRadius = Math.sqrt(pointInsideCircle.x * pointInsideCircle.x +
            pointInsideCircle.y * pointInsideCircle.y);
        const angle = Math.atan(pointInsideCircle.y / pointInsideCircle.x);

        return angle >= startAngle && angle <= endAngle && polarRadius < radius;
    }
I wszystko działa, kiedy operuję na pierwszej ćwiartce układu współrzędnych..

Kod: Zaznacz cały

isPointInGivenCircleAngle(8, new Point(1,1), 22.5, 67.5); // true => OK
isPointInGivenCircleAngle(8, new Point(1,1), 67.5, 112.5); // false => OK
isPointInGivenCircleAngle(8, new Point(1,3), 67.5, 112.5); // true => OK
Ale kiedy przechodzę do drugiej ćwiartki, a więc:

Kod: Zaznacz cały

isPointInGivenCircleAngle(8, new Point(-1,3), 67.5, 112.5); // false => ŹLE, powinno być true
Nie wiem dlaczego, kiedy zmienia się znak mam ten problem..
a4karo
Użytkownik
Użytkownik
Posty: 22173
Rejestracja: 15 maja 2011, o 20:55
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 38 razy
Pomógł: 3748 razy

Re: Podział okręgu na 8 wycinków i sprawdzenie, do którego wycinka należy punkt

Post autor: a4karo »

Poczytaj sobie o funkcji Math.atan
ODPOWIEDZ