Сообщение от Dstalk
И еще вопросик:
Имеется начальная точка (0,0) и пункт назначения; имеются препятствия (красным цветом), они в массиве карта[maxX,maxY].
Вопрос: как вычислить клетки по которым пойдет объект до столкновения с препятствием? Чего-то я думал, думал - каша какая-то выходит. Помогите пожалуйста)))
P.S. даже проще, если без препятствий - как вычислить по каким клеткам он пройдет? Кстати движения наискосок допускаются...
|
Клетки по которым пойдет объект из точки (startx;starty) в точку (finishx;finishy) можно посчитать так:
dx = finishx-startx
dy = finishy-starty
Angle# = atan(dx,dy) ;угол от начальной точки до конечной
Lenght# = sqrt(dx^2+dy^2) ;длина проверяемого отрезка
maxsteps = 10 ;количество шагов проверки чем больше - тем точнее проверка. Ставь его равным Abs(Lenght#) для средней точности
steplenght# = lenght/steps ; размер одного шага.
currx# = startx
curry# = starty
for currstep = 0 to maxsteps
currX# = currx# + steplenght#*sin (angle#) ; это координаты клетки через которую пройдет объект на этом шаге
currY# = currx# + steplenght#*cos(angle#) ; округли их до минимального целого.
next