アプリ版:「スタンプのみでお礼する」機能のリリースについて

二次元の平面のある線が、
円の範囲に入っているかどうかの計算方法が知りたいです。

前、四角でやった場合のYahoo知恵袋で質問をしたのですが、円の場合も知りたくなりました。
https://detail.chiebukuro.yahoo.co.jp/qa/questio …

その時のベストアンサーさんのをもとにしてほしいです。

下はそのベストアンサーさんのコピペです。
円の半径は√(長方形の幅 * 長方形の幅 + 長方形の高さ * 長方形の高さ)
でお願いします。

線分と長方形に共有があるならtrueを返す
boolean hit(
double x1,/*線分の端点*/
double y1,/*線分の端点*/
double x2,/*線分の端点*/
double y2,/*線分の端点*/
double w,/*長方形の幅*/
double h,/*長方形の高さ*/
double t,/*長方形を中心とする回転角rad*/
double a,/*長方形の中心点x*/
double b/*長方形の中心点y*/
) {
x1 -= a;
x2 -= a;
y1 -= b;
y2 -= b;
w *= 0.5;
h *= 0.5;
double u = Math.cos(t), v = Math.sin(t), u1 = u*x1+v*y1, v1 = u*y1-v*x1,
u2 = u*x2+v*y2, v2 = u*y2-v*x2;
if (u1<u2) {
u1 = -u1;
u2 = -u2;
}
if (v1<v2) {
v1 = -v1;
v2 = -v2;
}
double f = h*(u2-u1)+w*(v2-v1), g = u2*v1-u1*v2;
return f+g<0&&f-g<0&&u1+w>0&&u2-w<0&&v1+h>0&&v2-h<0;
}

A 回答 (1件)

「二次元の平面のある線が、


円の範囲に入っている」
とはどういうことなのか. いかなる条件を満たすときに「入っている」というのかをまず考えるべきだろう.

あと円の半径を「√(長方形の幅 * 長方形の幅 + 長方形の高さ * 長方形の高さ)」とするのはあきらかに無駄だし思考がおかしい. 素直に「円の半径」にしないのはなぜ?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!