59 Hillshade::~Hillshade() {
162 QObject::tr(
"Hillshade requires a 3x3x1 portal of data, but a %1x%2x%3 "
163 "portal of data was provided instead")
171 QObject::tr(
"Hillshade requires a valid azimuth angle (sun direction) to "
178 QObject::tr(
"Hillshade azimuth angle [%1] must be between 0 and 360 degrees")
185 QObject::tr(
"Hillshade requires a valid zenith angle (solar elevation) to "
192 QObject::tr(
"Hillshade zenith angle [%1] must be between 0 and 90 degrees")
199 QObject::tr(
"Hillshade requires a pixel resolution (meters/pixel) to "
206 QObject::tr(
"Hillshade requires a non-zero pixel resolution (meters/pixel) "
221 double result =
Null;
224 bool anySpecialPixels =
false;
225 for(
int i = 0; i < input.
size(); ++i) {
227 anySpecialPixels =
true;
232 if (!anySpecialPixels) {
247 double p = ( (-1) * input[0] + (0) * input[1] + (1) * input[2]
248 + (-1) * input[3] + (0) * input[4] + (1) * input[5]
249 + (-1) * input[6] + (0) * input[7] + (1) * input[8]) / (3.0 *
m_pixelResolution);
251 double q = ( (-1) * input[0] + (-1) * input[1] + (-1) * input[2]
252 + (0) * input[3] + (0) * input[4] + (0) * input[5]
274 double numerator = 1.0 + p0 * p + q0 * q;
276 double denominator = sqrt(1 + p * p + q * q) + sqrt(1 + p0 * p0 + q0 * q0);
278 result = numerator / denominator;
309 QString resolution =
"Null";
314 debug <<
"Hillshade[ azimuth =" << hillshade.
azimuth().
toString().toAscii().data()
316 <<
"resolution =" << resolution.toAscii().data() <<
"]";