円のセクタ内にあるピクセルを強調表示しようとしています。私はこれを行うためのシェーダーを書いていますが、私はそれが正しくなるまでロジックを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からあらゆる種類のものを試してきましたが、私は立ち往生しています。
私は問題を示すコードペンを持っています:https://codepen.io/chrisparton1991/pen/XRpqXb。誰かが私のアルゴリズムで間違っていることについて私を導くことはできますか?
ありがとうございます!
[this](http://stackoverflow.com/questions/14120015/check-if-coordinate-in-selected-area)の可能な複製 – Torben