김형준 GIS 연구소 (for Developers)  
Front Page
Notice | E-Mail | Admin | Write Article   
 
2009/11/16 18:43 2009/11/16 18:43
주어진 좌표와 선분 사이의 주어진 거리에 위치하는 선분의 좌표 구하기
사용자 삽입 이미지

제목이 난해하니 먼저 그림부터 보였습니다. 주어진 선분이 있습니다. 이 선분의 시작점은 (X1, Y1)이고 끝점은 (X2, Y2)입니다. 그리고 주어진 좌표가 있으며 (a, b)입니다. 이 선분과 좌표에 대해서 거리 ln를 가지는 선분상의 좌표를 구하는 것에 대한 정리 포스트입니다. 즉, 위의 그림에서 파란색 점은 주어진 좌표이고 빨간 점을 구하겠다는 것입니다.

먼저 선분에 대한 아래와 같은 매개변수 방정식을 정합니다.

사용자 삽입 이미지

우리가 구해야할 점은 선분상의 점이니 위의 매개변수 방정식에서 x와 y가 바로 우리가 원하는 값입니다. 이 x와 y를 구하기 위해서는 매개변수 t를 구하면 됩니다. 아시겠지만 t가 주어진 선분위에 존재하려면 0~1사이의 값이여야 합니다. 이 값을 벗어나면 답은 없음... 입니다.

이 한가지 관계만 가지고는 않됩니다. 또 하나의 관계를 맺어줘야 합니다. 그 관계는 주어진 좌표(a, b)와 구하고자 하는 선분상의 점(x, y)사이의 거리가 값 ln이라는 사실로부터 다음과 같은 식을 얻을 수 있습니다.

사용자 삽입 이미지

이제 처음 선분에 대한 방정식을 위의 방정식의 x, y에 대입하고 t에 대해 정리를 하면 아래와 같은 t에 대한 2차 방정식이 도출되며 이 2차 방정식을 근의 공식을 통해 t를 구해 보면 다음과 같습니다.

사용자 삽입 이미지

이렇게 구한 t에 대해서 범위가 0~1사이 인지를 검사하고 이 범위에 있다면 이 t를 선분의 방정식에 대입하여 구한 (x, y)가 구하고자 하는 좌표입니다.
Tag :
Track this back : http://www.gisdeveloper.co.kr/trackback/527
Commented by jjuiddong at 2010/01/19 13:30  r x
큰 도움이 되었습니다. ^^;
Replied by 김형준 at 2010/01/19 16:26 x
별 말씀을, ^^ 댓글 감사합니다.
Commented by 준. at 2010/01/25 16:10  r x
진행하는 프로젝트에 큰 도움이 되었네요. 고맙습니다.
Replied by 김형준(Dip2K) at 2010/01/26 11:34 x
도움이 되었다니 좋습니다.
Commented by 유희진 at 2010/04/13 14:50  r x
음.. a, b가 x1과 y1과 같은경우의 공식을 다음과같이 산출했는데요..
그리고 ln 길이값을 알고 있는상태이구요
douT = (douNextPoint(0) - douCurPoint(0)) ^ 2 + ((douNextPoint(1) - douCurPoint(1)) ^ 2) * (douCalLength) ^ 2
douT = Abs(Sqr(douT)) / (douNextPoint(0) - douCurPoint(0)) ^ 2 + (douNextPoint(1) - douCurPoint(1)) ^ 2
douX = douCurPoint(0) + douT * (douNextPoint(0) - douCurPoint(0))
douY = douCurPoint(1) + douT * (douNextPoint(1) - douCurPoint(1))

음.. 제가 잘못 계산한듯한데요..
Commented by 유희진 at 2010/04/13 14:52  r x
dounextpoint(0)= x2 : dounextpoint(1) = y2
doucurpoint(0) = x1 : doucurpoint(1) = y1
입니다. 후움.. 공식상으로 맞는건지요???
Replied by 김형준 at 2010/04/18 00:41 x
@_@;;;;; 댓글로 남긴 공식.. 저도 모가 뭔지 저도 모르겠습니다. douT뭐.. dounextpoint 며..

name    password    homepage
 hidden
BLOG main image
 Notice
DuraMap-Xr 소개 및 다운로드
[오픈소스] SimpleSHP v0.1
FingerEyes-Xr 소개 및 다운로드
OpenGL Tutorials
 Category
전체 (531)
GIS 개발 (146)
프로그래밍 (233)
스치는 생각들 (129)
번역 또는 집필 (3)
 TAGS
GIS Xr OpenGL Shader FingerEyes BlackPoint Algorithm Java Map Engine WPF
 Calendar
«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
 Recent Entries
[FingerEyes] 지오메트리...
[FingerEyes] Geometry로...
[FingerEyes] FID 리스트...
[FingerEyes] UPDATE, INS...
영화, "부러진 화살"
 Recent Comments
소스코드 그대로 써보아도...
인현환 - 13:50
글의 예제 코드의 숫자들...
김형준 - 12:57
안녕하세요. 포스트 잘 보...
인현환 - 11:15
메일로 답변드렸습니다....
김형준 - 02/01
txt파일을 엑셀로 변환하...
최상준 - 02/01
코봉히님두 새해 복 많이...
김형준 - 01/25
아 너무 감사합니다. 새해...
코봉히 - 01/23
wkb는 http://www.gisdeve...
김형준(Dip2K) - 01/23
wkb의 구조가 shp파일의...
코봉히 - 01/20
wkb는 바이너리인지라.....
김형준(Dip2K) - 01/20
 Archive
2012/02
2012/01
2011/12
2011/11
2011/10
2011/09
2011/08
2011/07
2011/06
2011/05
2011/04
2011/03
 Link Site
Adobe Flex 3 Help
Cartograph 2.0
GADM
GIS 위키디피아
GIS 프로그래밍 연구소
MapTools.org
OGC
OGRE3D
OSGeo 한국 지부
Paul Bourke Site
Wikipedia
국가수자원관리 정보시스템
국립지리원
국토연구원
국토해양부
네이버 과학
대한측량협회
류광님의 블로그
이민파님의 공간분석과 리...
지오서비스(GeoService)
 Visitor Statistics
Total : 929869
Today : 520
Yesterday : 511
태터툴즈 배너
rss