続き
頂点の追加を修正できた
期待通りに動くようになった
線が交差するようなところだとより近い方を選ぶ
同じ距離なら頂点の順番の小さい方を選ぶ
線は頂点の順番の小さい方から順番に引かれていく
追加された頂点はどの順番にすればいいのか
この場合なら新頂点は4番目にして4番目だった頂点を5番めになるようにしたい
昨日のはこれがうまく判定できなくて新頂点が2番めになっていた
頂点1の座標が(1,1)、頂点2が(5,3)、追加された新頂点が(3,2)のとき
新頂点は線の上にあるのか無いのかの判定はどうすればいいのか
エクセル方眼紙使って考えた
y=0.5x、まはたx=2yになる
この関係が1から新頂点の関係に当てはまれば
新頂点は1と2の線の上にあるってことになる
xA=頂点1のx-頂点2のx
yA=頂点1のy-頂点2のy
xB=頂点1のx-新頂点のx
yB=頂点1のy-新頂点のy
のとき
yB=(yA/xA)*xB
が正しければ線の上
それぞれ当てはめると
xA=1-5=-4
yA=1-3=-2
xB=1-3=-2
yB=1-2=-1
のとき
-1=(-2÷ -4)× -2
は正しいので新頂点は頂点1と頂点2の線の上
うーん、やっぱり小学校か中学校の算数だった…
順番に1と2の間、2と3の間、3と4の間……と調べていく
もっとまともな方法がある気がするのは
あとは先には太さがあるので新頂点が線の上にあっても
yB=(yA/xA)*xB
これがぴったり正しくならないこともある
今回のアクア色の線の太さは3ピクセルにしているので
最大で2か3ずれることがあるはずなので
水色が太さ3の線
新頂点はずれているけど線の上yB=(yA/xA)*xB
これの左辺と右辺の差(ズレ)が小さいものを探すことにした
ズレが小さいところに新頂点を追加
まとめた結果
↓
新頂点(62,95)を挿入する位置を決めたところ
ズレが一番小さい(2.0)のは3番めの線
3番目の線は頂点3と4の間の線なので
新頂点は頂点3の次に挿入すればいいことになる
新頂点が4番めになり元の頂点4は5番めになる
↓
頂点を中心にして太くなるんだなあ
正解は新頂点の順番が3番目になること
新頂点の座標は(144,52)
ズレの最小値は2番めの5.454545…なので3番目になればいい
ダウンロード
VisualBasic2013 - OneDrive
関連記事
次回、2014/12/23は2日後
前回、2014/12/20は1日前