ん…よく考えてみると、接点から半径分引き離す処理の42~43行目で、X[N]とY[N]を更新しているので、中点の計算結果が、42~43行目と44~45行目では、微妙にずれることになりますね。 次のようにするといいでしょう。 XM=(X[N]+X[C])/2:YM=(Y[N]+Y[C])/2 X[N]=-RD*CO+XM:Y[N]=-RD*SI+YM X[C]=RD*CO+XM:Y[C]=RD*SI+YM