-#include "pathlib.qh"
+#include "costs.qh"
float pathlib_g_static(entity parent,vector to, float static_cost)
{
{
//h(n) = D * (abs(n.x-goal.x) + abs(n.y-goal.y))
- float h;
- h = fabs(a.x - b.x);
+ float h = fabs(a.x - b.x);
h += fabs(a.y - b.y);
h *= pathlib_gridsize;
float pathlib_h_diagonal(vector a,vector b)
{
//h(n) = D * max(abs(n.x-goal.x), abs(n.y-goal.y))
- float h,x,y;
- x = fabs(a.x - b.x);
- y = fabs(a.y - b.y);
- h = pathlib_movecost * max(x,y);
+ float hx = fabs(a.x - b.x);
+ float hy = fabs(a.y - b.y);
+ float h = pathlib_movecost * max(hx,hy);
return h;
}
**/
float pathlib_h_diagonal2(vector a,vector b)
{
- float h_diag,h_str,h,x,y;
-
/*
h_diagonal(n) = min(abs(n.x-goal.x), abs(n.y-goal.y))
h_straight(n) = (abs(n.x-goal.x) + abs(n.y-goal.y))
h(n) = D2 * h_diagonal(n) + D * (h_straight(n) - 2*h_diagonal(n)))
*/
- x = fabs(a.x - b.x);
- y = fabs(a.y - b.y);
+ float hx = fabs(a.x - b.x);
+ float hy = fabs(a.y - b.y);
- h_diag = min(x,y);
- h_str = x + y;
+ float h_diag = min(hx,hy);
+ float h_str = hx + hy;
- h = pathlib_movecost_diag * h_diag;
+ float h = pathlib_movecost_diag * h_diag;
h += pathlib_movecost * (h_str - 2 * h_diag);
return h;
**/
float pathlib_h_diagonal2sdp(vector preprev,vector prev,vector point,vector end)
{
- float h_diag,h_str,h,x,y,z;
-
//h_diagonal(n) = min(abs(n.x-goal.x), abs(n.y-goal.y))
//h_straight(n) = (abs(n.x-goal.x) + abs(n.y-goal.y))
//h(n) = D2 * h_diagonal(n) + D * (h_straight(n) - 2*h_diagonal(n)))
- x = fabs(point.x - end.x);
- y = fabs(point.y - end.y);
- z = fabs(point.z - end.z);
+ float hx = fabs(point.x - end.x);
+ float hy = fabs(point.y - end.y);
+ float hz = fabs(point.z - end.z);
- h_diag = min3(x,y,z);
- h_str = x + y + z;
+ float h_diag = min3(hx,hy,hz);
+ float h_str = hx + hy + hz;
- h = pathlib_movecost_diag * h_diag;
+ float h = pathlib_movecost_diag * h_diag;
h += pathlib_movecost * (h_str - 2 * h_diag);
- float m;
- vector d1,d2;
-
- d1 = normalize(preprev - point);
- d2 = normalize(prev - point);
- m = vlen(d1-d2);
+ vector d1 = normalize(preprev - point);
+ vector d2 = normalize(prev - point);
+ float m = vlen(d1-d2);
return h * m;
}
float pathlib_h_diagonal3(vector a,vector b)
{
- float h_diag,h_str,h,x,y,z;
-
- x = fabs(a.x - b.x);
- y = fabs(a.y - b.y);
- z = fabs(a.z - b.z);
+ float hx = fabs(a.x - b.x);
+ float hy = fabs(a.y - b.y);
+ float hz = fabs(a.z - b.z);
- h_diag = min3(x,y,z);
- h_str = x + y + z;
+ float h_diag = min3(hx,hy,hz);
+ float h_str = hx + hy + hz;
- h = pathlib_movecost_diag * h_diag;
+ float h = pathlib_movecost_diag * h_diag;
h += pathlib_movecost * (h_str - 2 * h_diag);
return h;