이전 질문이지만 재미있는 문제로 들립니다. 나는이 시점에서 2D로 고수하고있다. 3D가 필요한 경우이를 배우고 3D 공간으로 변환하는 방법을 알아내는 것으로 시작할 수 있습니다. 이는 분명히 훨씬 어렵습니다.
12시 (π/2)에서 시작하여 마우스 클릭과 정점을 이등분하는 반지름으로 끝나는 호에 의해 형성된 원형 조각의 각도를 찾고 싶습니다. 그런 다음 캔버스를 사용하여 해당 지역을 채 웁니다.
수학 -
이 직각 삼각형 구성하여이 각도를 찾기 :
사이드 1 (y)를 : 수직 클릭의 y 위치에 원의 중심 (정점)에서
측면 2 (x) : 클릭의 y 위치에서 클릭의 x 위치까지 수평으로
사이드 3 : 대각선으로
가 기억 클릭의 x 위치에 정점 (이 빨간색으로, 빗변이고, 알려진 필요가 없습니다)에서, 마우스의 위치가 계산됩니다 왼쪽 오른쪽에서 위로 아래로.
면 x의 길이가 클릭의 x 위치에서 원의 반지름을 뺀 값과 같은지 확인하십시오.
다음으로 코탄 탄젠트 (인접면/반대면)를 사용하여 π (180도)에서 뺍니다. 음영 영역의 각도를 찾습니다. 당신이 볼 수 있듯이
, 일부 사분면에 당신은 파이를 추가하며, 일부는하지 않습니다,하지만 당신은 당신의 조각의 각도를 찾는 방법 본질적이다.
또한 1/2 pi (90도)부터 시작하기 때문에 원 (1/2pi) 주위로 1/4 정도 조정해야합니다.
강령 -
그것은 jQuery 플러그인입니다 -
https://raw.github.com/thilosavage/pielighter/master/pielighter.js
원의 직경은 캔버스 요소의 크기 속성에 의해 설정된다.
즉 <canvas id='myPIe' size='400'></canvas>
은 400px 너비의 원을 만듭니다.
테두리 크기, 테두리 색 및 채우기 색을 사용자 지정할 수 있습니다.
onRelease 및 onDrag에 대한 콜백을 추가 할 수 있습니다.이 콜백은 선택한 슬라이스의 퍼센트,도 및 라디안을 전달합니다.
간단한 데모 : http://thilosavage.com/projects/pielighter/demo-simple.php
전체 데모 : http://thilosavage.com/projects/pielighter/demo-full.php