function calcstrength(){ if( markerpoints.length && PlanRoutePoints.length ){ for( let i=1; i0.0 ){ if( Math.abs( lap-split )>1.0 ){ let laps = 0; let mul = lap/split; for( let p of PlanRoutePoints[i-1] ){ if( typeof p['tm']['lap']=="number" ){ p['tm']['lap'] *= mul; laps += p['tm']['lap']; } } PlanRoutePoints[i-1][PlanRoutePoints[i-1].length-1]['tm']['split'] = laps; } } } let day = 0; let total_distance = 0; let c = Array(); let distance = Array(); let variation = Array(); c[day] = 0; distance[day] = 0; variation[day] = 0; for( let i=0; i=0.0 ){ total_distance += x; distance[day] += x; let m = calcstrength_m( x, y ); let lap = deftime( {'lat':lat,'lon':lon,'alt':alt}, {'lat':p['loc'][1],'lon':p['loc'][0],'alt':p['alt']}, 100 ); if( !isNaN(lap) ){ c[day] += m*lap; } } } lon = p['loc'][0]; lat = p['loc'][1]; alt = p['alt']; } } } if( markerpoints[markerpoints.length-1]['code']=="VariationPoint" ){ variation[day] = 1; } total_distance = Math.round( total_distance/100 )/10; let str = "総歩行距離 "+total_distance.toFixed(1)+"km
"; for( let day in c ){ c[day] = Math.round( c[day]/4/60*100 )/100; let level = Math.floor( c[day]/5.0 ); if( level<0 ) level = 0; else if( level>4 ) level = 4; level = String.fromCharCode( 0x31+level ); let d = ""+(Math.round( distance[day]/100 )/10).toFixed(1)+""; c[day] = "
"+(parseInt(day)+1)+"日目:
歩行距離<"+d+"km>/体力強度<"+level+">"; // c[day] += "
"; if( variation[day] ){ c[day] += "
一般ルート外を含むので適切な数値ではありません
"; } c[day] += "
"; } str += c.join(""); str += "
体力強度はルートの技術的難易度を含んでいません
"; str += "
"; $("#strength").html( str ); } else { $("#strength").html( "" ); } } var strength_r1 = Array(4.0, 5.0, 6.3, 8.0, 10.1, 12.5); var strength_r2 = Array(4.0, 3.5, 3.5, 4.0, 5.0, 5.0); function calcstrength_m( x, y ){ if( x==0.0 ) return 0; let m; if( y>=0 ){// 上り let r = y*10/x; if( r>=5.0 ){ m = strength_r1[5]; } else { r0 = Math.floor(r); m = strength_r1[r0]+(strength_r1[r0+1]-strength_r1[r0])*(r-r0); } } else {//下り let r = -y*10/x; if( r>=5.0 ){ m = strength_r2[5]; } else { r0 = Math.floor(r); m = strength_r2[r0]+(strength_r2[r0+1]-strength_r2[r0])*(r-r0); } } return m; }