- プログラミングのお題スレ Part7 [転載禁止]©2ch.net
95 :デフォルトの名無しさん[sage]:2015/05/09(土) 22:04:06.89 ID:2bA/PfbD - >>41>>83数学的に考察してみた。間違ってたら訂正よろ
原点Oおよび点A=(Ax,Ay),点B=(Bx,By)をとる(ただし、∠O≦∠A≦∠Bとなるようにする) また、△OABの外接円の半径をRとし、Rの上限をMaxRとする 格子点はx軸,y軸,y=±xに対して対称なので0≦Ay≦Axとして一般性を失わない また、正弦定理より2*MaxR≧2*R=√(Ax^2+Ay^2)/sinB≧Ax ∴Ax≦2*MaxR さらに、△OABの面積S=|Ax*By-Bx*Ay|/2=|OB|*|AB|*sinB/2=|OA|*|OB|*|AB|/(4*R)より R=√(Ax^2+Ay^2)*√(Bx^2+By^2)*√{(Ax-Bx)^2+(Ay-By)^2}/(2*|Ax*By-Bx*Ay|)≦MaxR ∠A≦∠BよりBx^2+By^2≦Ax^2+Ay^2…@ ∴Bx≦√(Ax^2+Ay^2-By^2) また、OAの垂直二等分線の方程式はAx*X+Ay*Y=(Ax^2+Ay^2)/2で ∠O≦∠AよりAx*Bx+Ay*By≧(Ax^2+Ay^2)/2 ∴(Ax^2+Ay^2-2*Ay*By)/(2*Ax)≦Bx…A Aを@へ代入して整理すると4*By^2-4*Ay*By-3*Ax^2+Ay^2≦0 ∴(Ay-√3*Ax)/2≦By≦(Ay+√3*Ax)/2 以上より、点A,Bおよび半径Rの取りうる範囲をまとめると (1) 0≦Ay≦Ax≦2*MaxR (2) (Ay-√3*Ax)/2≦By≦(Ay+√3*Ax)/2 (3) (Ax^2+Ay^2-2*Ay*By)/(2*Ax)≦Bx≦√(Ax^2+Ay^2-By^2) (4) R=√(Ax^2+Ay^2)*√(Bx^2+By^2)*√{(Ax-Bx)^2+(Ay-By)^2}/(2*|Ax*By-Bx*Ay|)≦MaxR △OABの外接円の中心(Rx,Ry)はOAの垂直二等分線とOBの垂直二等分線の交点より Ax*Rx+Ay*Ry=(Ax^2+Ay^2)/2,Bx*Rx+By*Ry=(Bx^2+By^2)/2で、これを解くと Rx={(Ax^2+Ay^2)*By-(Bx^2+By^2)*Ay}/{2*(Ax*By-Bx*Ay)}, Ry={Ax*(Bx^2+By^2)-Bx*(Ax^2+Ay^2)}/{2*(Ax*By-Bx*Ay)} よって、3点O,A,Bを通る円の方程式は(X-Rx)^2+(Y-Ry)^2=R^2を整理して {2*(Ax*By-Bx*Ay)*X-(Ax^2+Ay^2)*By+(Bx^2+By^2)*Ay}^2 +{2*(Ax*By-Bx*Ay)*Y-Ax*(Bx^2+By^2)+Bx*(Ax^2+Ay^2)}^2 =(Ax^2+Ay^2)*(Bx^2+By^2)*{(Ax-Bx)^2+(Ay-By)^2}
|