원의 내부 점인지 알아보기
원의 방정식
원의 방정식 참조
원과 점의 위치 관계와 판정 방법
원과 점의 위치 관계는
의 3가지.
그 판정 방법은, 원의 중심으로부터 조사하는 점까지의 길이와, 반경을 비교하여,
된다.
원의 중심의 좌표를 $(a,b)$, 반경을 $r$, 조사하는 점 $Q$의 좌표를 $(x,y)$로 했을 때,
$$\sqrt{(x - a)^2 + (y - b)^2}
$$ (x - a)^2 + (y - b)^2
원주상의 점도 내부로 간주하는 경우의 판정식은,
$$ (x - a)^2 + (y - b)^2\leqq r^2$$
된다.
【예】 중심(3,2) 반경 5 의 원에 대해서,
(1) $Q_1(2,6)$는
(2-3)^2+(6-2)^2=1+16=17\\
r^2=5^2=25\\
17<25\quad なので\quad Q_1は円の内部の点
(2) $Q_2(7,5)$는
(7-3)^2+(5-2)^2=16+9=25\\
r^2=5^2=25\\
25=25\quad なので\quad Q_2は円周上の点
(3) $Q_3(8,-2)$는
(8-3)^2+(-2-2)^2=25+16=41\\
r^2=5^2=25\\
41>25\quad なので\quad Q_3は円の外部の点
판정 프로그램
;; 円周上の点か調べる
;; Args - cx : 円の中心のx座標
;; cy : 円の中心のy座標
;; cr : 円の半径
;; x : 調べる点のx座標
;; y : 調べる点のy座標
(defun circle:IsOn (cx cy cr x y)
(equal (+ (expt (- x cx) 2) (expt (- y cy) 2)) (* cr cr) 1e-8)
)
;; 円の内部の点か調べる
(defun circle:Contains (cx cy cr x y)
(< (+ (expt (- x cx) 2) (expt (- y cy) 2)) (* cr cr))
)
;; 円の内部の点か調べる
;; 円周上の点も含める
(defun circle:IsOnOrContains (cx cy cr x y)
(or (circle:IsOn cx cy cr x y) (circle:Contains cx cy cr x y))
)
;; < Example >
(circle:IsOn 3. 2. 5. 2. 6.) ;;Q1
;; -> T
(circle:IsOn 3. 2. 5. 7. 5.) ;;Q2
;; -> nil
(circle:IsOn 3. 2. 5. 8. -2.) ;;Q3
;; -> nil
(circle:Contains 3. 2. 5. 2. 6.) ;;Q1
;; -> nil
(circle:Contains 3. 2. 5. 7. 5.) ;;Q2
;; -> T
(circle:Contains 3. 2. 5. 8. -2.) ;;Q3
;; -> nil
(circle:IsOnOrContains 3. 2. 5. 2. 6.) ;;Q1
;; -> T
(circle:IsOnOrContains 3. 2. 5. 7. 5.) ;;Q2
;; -> T
(circle:IsOnOrContains 3. 2. 5. 8. -2.) ;;Q3
;; -> nil
Reference
이 문제에 관하여(원의 내부 점인지 알아보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tydesign/items/c0d5c9a2c823cc434ec6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)