원의 섹터 내에있는 픽셀을 강조 표시하려고합니다. 이 작업을 수행하기위한 쉐이더를 작성 중이지만 올바르게 구현 될 때까지 JavaScript로 로직을 구현하고 있습니다.좌표가 섹터 내에 있는지 확인하십시오.
기본적으로 각 픽셀 캔버스 좌표는 0과 1 사이로 스케일링하고 캔버스 컨텍스트와 함께 다음과 같은 코드로 전달된다
가function isWithinSector(ctx, x, y) {
let startAngle = degToRad(135), endAngle = degToRad(205);
// Distance of pixel from the circle origin (0.5, 0.5).
let dx = scaledX - 0.5;
let dy = scaledY - 0.5;
let angle = Math.atan2(dy, dx);
if (angle >= startAngle && angle <= endAngle) {
ctx.fillStyle = "rgba(255, 255, 0, .5)";
ctx.fillRect(x, y, 1, 1);
}
}
이 어떤 각도에 대해 잘 작동하지만 다른 사람들을 위해. 픽셀은 135 사이 205도는 다음과 같이 나타납니다 강조 (즉에만 135 ~ 180도 강조 표시됩니다) : 강조 표시된 픽셀 내 블랙 아크 (진리의 소스) 일치하지 않음을
참고. 나는 Google에서 온갖 종류의 것을 시도해 왔지만 나는 갇혀있다.
문제를 나타내는 CodePen이 있습니다 (https://codepen.io/chrisparton1991/pen/XRpqXb). 아무도 내가 알고리즘에서 잘못하고있는 것에 대해 안내 할 수 있습니까?
감사합니다.
가능한 복제본 [this] (http://stackoverflow.com/questions/14120015/check-if-coordinate-in-selected-area) – Torben