/// <summary> /// Point on axis aligned box (including interior points) closest to target point "p". /// </summary> public Point3d AABBClosestPoint(Point3d p) { p = p.ConvertToGlobal(); double x = GeometRi3D.Clamp(p.X, this._center.X - _lx / 2, this._center.X + _lx / 2); double y = GeometRi3D.Clamp(p.Y, this._center.Y - _ly / 2, this._center.Y + _ly / 2); double z = GeometRi3D.Clamp(p.Z, this._center.Z - _lz / 2, this._center.Z + _lz / 2); return(new Point3d(x, y, z)); }
/// <summary> /// Point on box (including interior points) closest to target point "p". /// </summary> public Point3d ClosestPoint(Point3d p) { Coord3d local_coord = this.LocalCoord(); p = p.ConvertTo(local_coord); double x = GeometRi3D.Clamp(p.X, -_lx / 2, _lx / 2); double y = GeometRi3D.Clamp(p.Y, -_ly / 2, _ly / 2); double z = GeometRi3D.Clamp(p.Z, -_lz / 2, _lz / 2); return(new Point3d(x, y, z, local_coord)); }