リビジョン | 55 (tree) |
---|---|
日時 | 2020-07-13 13:29:52 |
作者 | dangerouswoo |
(メッセージはありません)
@@ -72,11 +72,35 @@ | ||
72 | 72 | |
73 | 73 | protected class ThreshPack |
74 | 74 | { |
75 | + /// <summary> | |
76 | + /// 位置 | |
77 | + /// </summary> | |
75 | 78 | public latlontool.latlng Position ; |
79 | + /// <summary> | |
80 | + /// 方向 | |
81 | + /// </summary> | |
76 | 82 | public PointF Vector; |
83 | + /// <summary> | |
84 | + /// 角度差 | |
85 | + /// </summary> | |
77 | 86 | public double AngleDiff; |
87 | + /// <summary> | |
88 | + /// 距離 | |
89 | + /// </summary> | |
78 | 90 | public double Distance; |
91 | + /// <summary> | |
92 | + /// 距離差 | |
93 | + /// </summary> | |
79 | 94 | public double Diff; |
95 | + | |
96 | + /// <summary> | |
97 | + /// 判定用ウエイト | |
98 | + /// </summary> | |
99 | + /// <returns></returns> | |
100 | + public double Weight() | |
101 | + { | |
102 | + return Math.Abs(AngleDiff) * 0.8 + Diff * 1.1; | |
103 | + } | |
80 | 104 | } |
81 | 105 | |
82 | 106 | /// <summary> |
@@ -307,7 +331,7 @@ | ||
307 | 331 | { |
308 | 332 | var findlist = new List<ThreshPack>(); |
309 | 333 | |
310 | - for (float fDistance = 2.0f; fDistance <= 60.0f; fDistance += 2.0f) | |
334 | + for (float fDistance = 2.0f; fDistance <= 75.0f; fDistance += 2.0f) | |
311 | 335 | { |
312 | 336 | double dDeltaR = 1 / fDistance * 2.0; |
313 | 337 | if (dDeltaR < 0.3) |
@@ -334,7 +358,7 @@ | ||
334 | 358 | lock (findlist) |
335 | 359 | { |
336 | 360 | //発見 |
337 | - findlist.Add(new ThreshPack() { Position = result.next, Vector = testvector, AngleDiff = iD, Distance = fDistance }); | |
361 | + findlist.Add(new ThreshPack() { Position = result.next, Vector = testvector, AngleDiff = iD, Distance = fDistance, Diff = latlontool.calcS(result.next, nlatlng) }); | |
338 | 362 | } |
339 | 363 | } |
340 | 364 | }); |
@@ -391,8 +415,8 @@ | ||
391 | 415 | linestable.Add(pppp[pppp.Length / 2]); |
392 | 416 | } |
393 | 417 | |
394 | - //角度差分の少ない候補とする | |
395 | - var finalpacklist = linestable.Where(lp => Math.Abs(lp.AngleDiff) == linestable.Min(lpp => Math.Abs(lpp.AngleDiff))).ToArray(); | |
418 | + //差分の少ない候補とする | |
419 | + var finalpacklist = linestable.Where(lp => lp.Weight() == linestable.Min(lpp => lpp.Weight())).ToArray(); | |
396 | 420 | var next = finalpacklist[finalpacklist.Length / 2]; |
397 | 421 | m_walking++; |
398 | 422 | walkinglist.Add(next.Position); |