docs: public void describe(double x, double y, double angle, double scale, TupleDesc_F64 ret)
  	{
  		double c = Math.cos(angle),s=Math.sin(angle);
  
  		// By assuming that the entire feature is inside the image faster algorithms can be used
  		// the results are also of dubious value when interacting with the image border.
  		boolean isInBounds =
  				SurfDescribeOps.isInside(ii,x,y, radiusDescriptor,widthSample,scale,c,s);
  
  		// declare the feature if needed
  		if( ret == null )
  			ret = new BrightFeature(featureDOF);
  		else if( ret.value.length != featureDOF )
  			throw new IllegalArgumentException("Provided feature must have "+featureDOF+" values");
  
  		gradient.setImage(ii);
  		gradient.setWidth(widthSample*scale);
  
  		// use a safe method if its along the image border
  		SparseImageGradient gradient = isInBounds ? this.gradient : this.gradientSafe;
  
  		// extract descriptor
  		features(x, y, c, s, scale, gradient , ret.value);
  	}