comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/geom/Lines.java @ 2687:dc67ddd4a34c

Progressed area calculation while line computation a bit. flys-artifacts/trunk@4388 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 11 May 2012 07:24:12 +0000
parents b94b367d8b4d
children 99350b06a780
comparison
equal deleted inserted replaced
2686:6fda6ec9e426 2687:dc67ddd4a34c
240 else { // --> wet 240 else { // --> wet
241 if (mode != Mode.WET) { 241 if (mode != Mode.WET) {
242 startX = p1.getX(); 242 startX = p1.getX();
243 mode = Mode.WET; 243 mode = Mode.WET;
244 } 244 }
245 area += area(p1, p2,
246 new Point2D.Double(p2.getX(), waterLevel),
247 new Point2D.Double(p2.getX(), waterLevel));
245 } 248 }
246 } 249 }
247 else { // p2 == waterlevel 250 else { // p2 == waterlevel
248 log.debug("water hits second vertex"); 251 log.debug("water hits second vertex");
249 if (p1.getY() > waterLevel) { // --> wet 252 if (p1.getY() > waterLevel) { // --> wet
257 result.add(new Line2D.Double( 260 result.add(new Line2D.Double(
258 startX, waterLevel, 261 startX, waterLevel,
259 p2.getX(), waterLevel)); 262 p2.getX(), waterLevel));
260 } 263 }
261 mode = Mode.DRY; 264 mode = Mode.DRY;
265 area += area(p1, p2,
266 new Point2D.Double(p1.getX(), waterLevel),
267 new Point2D.Double(p1.getX(), waterLevel));
262 } 268 }
263 } 269 }
264 if (debug) { 270 if (debug) {
265 log.debug("mode is now: " + mode); 271 log.debug("mode is now: " + mode);
266 } 272 }
276 282
277 if (debug) { 283 if (debug) {
278 log.debug("intersection p1:" + p1); 284 log.debug("intersection p1:" + p1);
279 log.debug("intersection p2:" + p2); 285 log.debug("intersection p2:" + p2);
280 log.debug("intersection at x: " + x); 286 log.debug("intersection at x: " + x);
287 }
288
289 // Add area of that part of intersection that is 'wet'.
290 if (p1.getY() > waterLevel) {
291 area += area(new Point2D.Double(x, waterLevel),
292 p2,
293 new Point2D.Double(p2.getX(), waterLevel),
294 new Point2D.Double(x, waterLevel));
295 }
296 else {
297 area += area(new Point2D.Double(x, waterLevel),
298 p1,
299 new Point2D.Double(p1.getX(), waterLevel),
300 new Point2D.Double(x, waterLevel));
281 } 301 }
282 302
283 switch (mode) { 303 switch (mode) {
284 case WET: 304 case WET:
285 log.debug("intersect/wet"); 305 log.debug("intersect/wet");

http://dive4elements.wald.intevation.org