mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Fix profile and average depth for freedives
Freedives can easily exceed the assumed ascent/descent rate, which results in wacky dive profiles. Add a check to make the ascent and descent fit within the duration of the dive.
This commit is contained in:
		
							parent
							
								
									9d46581913
								
							
						
					
					
						commit
						d6b50e30e4
					
				
					 2 changed files with 7 additions and 4 deletions
				
			
		
							
								
								
									
										9
									
								
								dive.c
									
										
									
									
									
								
							
							
						
						
									
										9
									
								
								dive.c
									
										
									
									
									
								
							|  | @ -478,11 +478,12 @@ struct dive *fixup_dive(struct dive *dive) | |||
| 		int asc_desc_time = depth*60/9000; | ||||
| 		int duration = dive->duration.seconds; | ||||
| 
 | ||||
| 		/* Protect against insane dives - make mean be half of max */ | ||||
| 		if (duration <= asc_desc_time) { | ||||
| 		/* Some sanity checks against insane dives */ | ||||
| 		if (duration < 2) | ||||
| 			duration = 2; | ||||
| 			asc_desc_time = 1; | ||||
| 		} | ||||
| 		if (asc_desc_time * 2 >= duration) | ||||
| 			asc_desc_time = duration/2; | ||||
| 
 | ||||
| 		dive->meandepth.mm = depth*(duration-asc_desc_time)/duration; | ||||
| 		return dive; | ||||
| 	} | ||||
|  |  | |||
|  | @ -1387,6 +1387,8 @@ void plot(struct graphics_context *gc, cairo_rectangle_int_t *drawing_area, stru | |||
| 		int duration = dive->duration.seconds; | ||||
| 		int maxdepth = dive->maxdepth.mm; | ||||
| 		int asc_desc_time = dive->maxdepth.mm*60/9000; | ||||
| 		if (asc_desc_time * 2 >= duration) | ||||
| 			asc_desc_time = duration / 2; | ||||
| 		sample = fake; | ||||
| 		fake[1].time.seconds = asc_desc_time; | ||||
| 		fake[1].depth.mm = maxdepth; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue