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;
}
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
Kod: Zaznacz cały
isPointInGivenCircleAngle(8, new Point(-1,3), 67.5, 112.5); // false => ŹLE, powinno być true