2013-12-12 5 views
3

편집 : 답변 (getPointAtLength에 대해 @musically_ut에 크레디트가 있지만 실제 작업을 직접 수행해야하는 것처럼 보입니다.) 참고 : "draw.circle"-syntax는 svg.js에 있습니다.)SVG : 곡선의 점 찾기

  1. 찾을 .attr({id: "mypath"});
  2. 과 경로에 자신의 ID를 추가 : var a = document.getElementById("IdOfSvgCurve");

  3. 곡선에 몇 원을 그립니다. 좌표는 시작점을 기준으로해야합니다.

    var pt_start = a.getPointAtLength (0);
    for (var i = 0; i < len; i ++) { var pt = a.getPointAtLength (i * 10); var c = draw.circle (7) . fill ({color : "green"}) .move (pt.x - pt_start.x, pt.y - pt_start.y); }

원래 질문 :

<path id="SvgjsPath1044" d="M 125,75 a100,50 0 0,0 100,50"/> 

http://jsfiddle.net/wVC7j/

가 어떻게 그 마우스 오른쪽 점을 배치 할 수있는 베 지어 또는 타원이 될 수있다, 내가 SVG 곡선을 말해봐 곡선? 이처럼 :

https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Interpolation_example_polynomial.svg/220px-Interpolation_example_polynomial.svg.png

은 그것은 "좌표 시스템"을 사용하거나 실제로 곡선에있는 점을 calculting 자신의 좌표를 사용하여 추가하여 수, 경로 길이와 같은 것을 사용 될 수 있습니다.

이것은 주로 설명을위한 것이므로 반드시 일반적인 해결책이 필요하지 않습니다.

svg.js 라이브러리를 사용하고 있지만이 부분을 "기본적으로"수행 할 수 있습니다.

감사합니다.

+0

이 경우 경로는 수학 함수를 나타내므로 함수의 점을 대수적으로 계산할 수 있습니다. – sbking

+2

Snap.svg에는 두 경로의 교차점을 찾을 수있는'intersection' 메소드가 있습니다. 임시 수직선 경로를 만들고, 교차점을 계산하고, 교차점에 점을 추가하고, 수직선을 제거 할 수 있습니다. – sbking

+0

글쎄, [실제 SVG 파일] (https://upload.wikimedia.org/wikipedia/commons/4/41/Interpolation_example_polynomial.svg)을보고 어떻게 완료되었는지 확인하십시오! 틀림없이 소스가 끔찍합니다. – Bergi

답변

5

SVGPathElement은 기능이 getPointAtLength()입니다.

이 기능을 사용하여 경로상의 지점을 찾은 다음 circle 요소를 해당 위치에 배치 할 수 있습니다.

+0

나는 그가 어떤 종류의'getPointAtXCoordinate' 함수를 갖고 싶어한다고 생각한다 ... – Bergi