수학 무게가있는 프로그래밍 질문이 있습니다. 나는 모양 (폴리 라인)이있는지도를 익사시킵니다. 그 모양의 화면 좌표를 가져 와서지도 좌표로 변환하고 뒤집을 수 있습니다. 나는 마우스 위치를 잡아서지도 주위를 돌아 다니고있다. 마우스를 움직일 때지도에서 익사 된 다른 모양에 근접해 있는지 어떻게 알 수 있습니까? 나는 마우스 커서 주위에 점의 반지름을 만들고, 그 다음 계속적으로 사용할 수있는 물결 모양을 반복적으로 만들 생각이었다. (배열에서 좌표를로드 할 수 있다고 상상해 본다. 그러나 그것은 매우 느릴 것이라고 생각합니다. 요점은 내가 근접 (예 : 15px)에있을 때 뮤즈 위치를 가까운 모양으로 스냅하는 것입니다. 어떤 제안?폴리 라인에 가까울 때 마우스 커서 감지
답변
이제 완벽하게 만들고 싶다면 커서의 각 선분까지의 거리를 계산할 수 있습니다. 각 선분
는 형식 세그먼트 DE위한계산 광고 화학식 (점 D 및 E에 의해 정의 된)
도끼 + + C = 0
A = Dy를 바이 - 어이
B = 전 - DX를
가 C = (점 D에서 플러그) = -1 * (A *의 Dx + B *의 Dy)
이제 공식에 커서 위치에 연결 :
A * cursor.x + B * cursor.y + C = 선분에 대한 귀하의 거리 한 가지 *
-이 거리가 바운드 형식이다 선. 이제 두 세그먼트 포인트 사이에 있는지 확인하려고합니다. 따라서 커서의 각도 (D, E 삼각형)가 모두 < (90도)인지 확인하십시오. 이를 수행 할 수있는 여러 가지 방법으로 빠른 제품 수식을 살펴보십시오.
이제는 값이 90보다 작 으면 선과의 거리를 사용하고, 그렇지 않으면 최소 거리를 사용하여 세그먼트 중 어느 한 점 (D & E)을 사용하십시오. 이제 라인 기능에 대한 완벽한 스냅 기능이 제공됩니다.
당신은 모양의 모든 점/선분이있는 경우 (이 당신이해야 폴리 라인 포함), 여기에 가능한 빠르고 간단한 루틴 : 모양의 각 모양 그림 센터
각 구성 점을 평균하여 (즉 - 5 각형에 대해 5 점을 모두 더한다. x를 5로 나눈다. 모든 점에 대해 똑같이한다.) 이 평균 shape.x 및 shape.y를 호출하십시오. 거리 공식을 사용하여 마우스의 근접성을 계산하십시오. (Mouse.x - Shape.x)^2 + (Mouse.y - Shape.y)^2 ... 가장 가까운 모양에만 관심이 있기 때문에 그 제곱근을 취할 필요가 없습니다.
각 모양에 대한 최소 거리 "제곱"을 추적하십시오. 최소값은 가장 가까운 모양의 중심입니다.
최대 범위의 비헤이비어로 스냅하고 싶다면 거리의 제곱이 < 픽셀 거리 제곱인지 확인하십시오.
매우 효과적이기를 원한다면, 모양 센터는 지속적으로 재구성 될 필요가 없으며 한 번 계산됩니다. 언급 한대로 화면 공간과 다른 좌표간에 변환하는 경우 다른 점과 동일하게 축척되고 변환됩니다.
- 1. 실행 시간이 max_execution_time에 가까울 때 감지
- 2. Google지도 폴리 라인의 선 세그먼트에 마우스 이벤트
- 3. 마우스 커서
- 4. 마우스가 가까울 때 반발하는 개체
- 5. Google지도 v3, 폴리 라인 마우스 이벤트
- 6. ASP.NET에서 페이지로드 중일 때 바쁜 마우스 커서
- 7. Google지도 오버레이 마우스 커서
- 8. Qt 마우스 커서 재설정
- 9. winapi에서 간단한 마우스 이동 감지 (커서 이동 없음)
- 10. 마우스 클릭 시뮬레이션/파이썬에서 커서 아래에있는 색상 감지
- 11. JTable의 변화에 마우스 커서
- 12. AS3 충돌 감지 마우스 움직임
- 13. IBeam 커서 감지
- 14. iframe에서 마우스 커서 변경하기
- 15. PeekMessage() 마우스 커서 재설정
- 16. 마우스 커서 이동 Javascript
- 17. Windows에서 마우스 커서 대체
- 18. 네트워크를 통한 마우스 커서 직렬화
- 19. 다른 프로그램에 포커스가있을 때 마우스 클릭 감지
- 20. jQuery로 마우스 방향 감지
- 21. 감지 마우스 클릭 이벤트는
- 22. PictureBox의 마우스 커서 아래에있는 텍스트
- 23. 공유 지점에서 마우스 커서 변경
- 24. 여러 마우스 이동 감지
- 25. 마우스 감지, OS 부팅
- 26. 은색의 동일한 폴리 라인에 다중 색상을 추가하는 방법
- 27. WPF StreamGeometry로 그려진 폴리 라인에 앤티 앨리어싱을 설정하는 방법은 무엇입니까?
- 28. C#/Kinect 마우스 커서 제어
- 29. 마우스 커서 - 워드 프레스 사이트
- 30. C# 글로벌 마우스 커서 변경