mlFloat utLatticeMagnitude(const mlVector3D & line) { mlVector2D distanceVector = line; distanceVector.x = mlFabs(distanceVector.x); distanceVector.y = mlFabs(distanceVector.y); mlFloat latticeDistance2D; if(distanceVector.x < distanceVector.y) latticeDistance2D = distanceVector.x * mlSqrtTwo + (distanceVector.y - distanceVector.x); else latticeDistance2D = distanceVector.y * mlSqrtTwo + (distanceVector.x - distanceVector.y); std::vector<mlFloat> dimensions; dimensions.push_back(mlFabs(line.x)); dimensions.push_back(mlFabs(line.y)); dimensions.push_back(mlFabs(line.z)); std::sort(dimensions.begin(), dimensions.end()); //mlFloat d0 = dimensions[0]; //mlFloat d1 = dimensions[1]; //mlFloat d2 = dimensions[2]; mlFloat latticeDistance3D = (dimensions[0] * mlSqrt(3.0f)) + ((dimensions[1] - dimensions[0]) * mlSqrt(2.0f)) + (dimensions[2] - dimensions[1]); return latticeDistance3D; }
mlFloat mlVector3D::Magnitude() const { return mlSqrt(x * x + y * y + z * z); }
mlFloat mlVector2D::Magnitude() const { return mlSqrt(x * x + y * y); }