- double xoff = cos( course ) * dist / (2 * scale);
- double yoff = sin( course ) * dist / (2 * scale);
+
+ // calculate cloud movement due to external forces
+ double ax = 0.0, ay = 0.0, bx = 0.0, by = 0.0;
+
+ if (dist > 0.0) {
+ ax = cos(course) * dist;
+ ay = sin(course) * dist;
+ }
+
+ if (sp_dist > 0) {
+ bx = cos(-direction * SGD_DEGREES_TO_RADIANS) * sp_dist;
+ by = sin(-direction * SGD_DEGREES_TO_RADIANS) * sp_dist;
+ }
+
+
+ double xoff = (ax + bx) / (2 * scale);
+ double yoff = (ay + by) / (2 * scale);