トップページ > プログラム > 2015年05月09日 > 2bA/PfbD

書き込み順位&時間帯一覧

26 位/162 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000000112



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
プログラミングのお題スレ Part7 [転載禁止]©2ch.net

書き込みレス一覧

プログラミングのお題スレ 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}
プログラミングのお題スレ Part7 [転載禁止]©2ch.net
98 :デフォルトの名無しさん[sage]:2015/05/09(土) 23:04:14.73 ID:2bA/PfbD
>>95
案の定間違ってた…
Aを@へ代入するところBx<0のときは成り立たないので場合分けする必要があるな


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。