私の 2D レイ トレーサーは、計算されたレイを角度 (具体的にはラジアン) でソートするまでは問題なく動作していました。タンの行動に関係していると思いますが、よくわかりません。衝突と起点の既知の x、y を使用して角度を並べ替える最良の方法は何ですか? 私は同じ問題に2週間オンとオフで取り組んでおり、ほとんどすべてを試しました.
私は今ここに写真をアップロードすることができます:
あなたがそれをいじりたいなら、ここに有罪のコードがあります:
function sortByAngle(pos){
for (var i = viewFeild.length - 1; i >= 0; i --) {
viewFeild[i][3] = Math.atan((viewFeild[i][4]-pos.y)/(viewFeild[i][0]-pos.x));
if(viewFeild[i][5]<pos.y)
viewFeild[i][6] = viewFeild[i][7]*-1-4;
if (viewFeild[i][8]<0) {viewFeild[i][9]+=2};
};
viewFeild.sort(function(a,b){return a[2]-b[2]});
}
function fillView(pos) {
for (var i = viewFeild.length - 1; i >= 0; i--) {
//console.log(i+" "+viewFeild[i][10] + " " + viewFeild[(i+1)%viewFeild.length][11])
//console.log(viewFeild.length)
ctx.beginPath();
ctx.moveTo(pos.x, pos.y);
ctx.lineTo(viewFeild[i][0]+pos.x, viewFeild[i][12]+pos.y);
ctx.lineTo(viewFeild[(i+1)%viewFeild.length][0]+pos.x, viewFeild[(i+1)%viewFeild.length][13]+pos.y);
ctx.closePath();
ctx.fillStyle = "rgba(100, " + 35*i + ", 100, .6)";
ctx.fill();
};
}
js コード全体と html を含む Google ドキュメントを次に示します (html は js の後にあり ます)