레이 캐스팅 기술을 사용하여 프로젝트를 시작했습니다. GitHub Project 레이의 길이 (플레이어의 벽에서부터 벽까지의 거리)를 찾으려면 저는 하나씩 증가시킵니다. 그러나 시간이 오래 걸리며 정확하지 않은 &이라는 몇 가지 문제가 텍스처링에 어려움이 있습니다.dda 알고리즘 - 레이 캐스팅
da 알고리즘을 구현하려했는데, 1에서 1 씩 증가하는 알고리즘은 그리드를 통과하여 정확한 위치를 반환합니다.
http://www.geeksforgeeks.org/dda-line-generation-algorithm-computer-graphics/
는 또는 어떤 조언을 가진 사람의 경험을 했습니까?
어떤 알고리즘 방법은 없습니다 :
for(let resolution = 0; resolution < display.width/2; resolution++){ //every 2nd px gets scanned
let ray = this.pov + (-this.fov/2 + this.fov/(display.width/2) * resolution);
let distance = 0, hit = false;
/*ugly way of raycasting!*/
do{
let x = this.x + distance * Math.cos(ray * (Math.PI/180));
let y = this.y + distance * Math.sin(ray * (Math.PI/180));
if(map[Math.floor(x/block)][Math.floor(y/block)]){
distance = Math.sqrt(Math.pow(this.x - x, 2) + Math.pow(this.y - y, 2));
hit = true
}
distance += 1;
}while(!hit);
distance = convert/distance;
canvas.fillStyle = "#fff";
canvas.fillRect(resolution * 2, display.height/2 - distance/2, 2, distance);
}
선 라인 /면/삼각형/쿼드 교차 '(1)'작업이 방정식을 도출 O처럼 사용 voxelization 알고리즘 (또는 구글) 그냥 사용 이것을 위해 루프가 필요 없습니다. – Spektre