Strona 1 z 1

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

: 12 paź 2019, o 13:04
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..

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

: 12 paź 2019, o 14:28
autor: a4karo
Poczytaj sobie o funkcji Math.atan