2017-12-11 4 views
1

일반 셰이프를 점 목록으로 분할하여 특정 비율에 따라 경로를 따라 특정 스프라이트를 이동할 수 있습니다.자바 2dpath 균등 분할 방법

지금 내가 여러 지점에 모양을 나눌 수 있습니다 :

Point distribution

이 다음 코드에 의해 제작되었다 :

shapeComp = system.gui.getParentWindow(event).getComponentForPath('Root Container.Path') 
shape=shapeComp.getShape() 
pathIterator = FlatteningPathIterator(shape.getPathIterator(AffineTransform()), 1) 
graphics = system.gui.getParentWindow(event).graphics 

segment = jarray.zeros(6,'d') 
path = [] 

while not pathIterator.isDone(): 
    pathIterator.currentSegment(segment) 
    path.append([segment[0], segment[1]]) 
    graphics.fillOval(int(segment[0]), int(segment[1]), 5, 5) 
    pathIterator.next() 

당신이 그림에서 볼 수 있듯이, 포인트를 경로를 따라 균등하게 분배되지 않습니다. 모든 점 사이의 거리를 동일하게 만드는 방법이 있습니까?

답변

0

javadoc에서 볼 수 있듯이 flattness에 대한 추가 속성이 있습니다. 따라서 두 번째 인수를 특정 값으로 설정하여 예상대로 얻을 수 있어야합니다. 그러나 모든 경우에 이것이 사실이라면 나는 모른다.

평탄 - 만곡 세그먼트 (segment)를 작성하기 위해서 사용되는 선분이 원의 곡선상의 임의의 점으로부터 멀어 질 수있는 최대의 거리

+0

최대 거리가있는 것은 사실이지만, 어떤 I 필요는 2 점 사이의 정확한 거리입니다. 그래서 나는 같은 길이의 세그먼트를 얻을 것입니다. 이것이 어떻게 가능할 지에 대한 아이디어가 있습니까? – Thijs

+0

Ohh 알겠습니다. 죄송합니다. 기본 구현에서는 불가능합니다. 이를 위해 스스로 PathIterator 인터페이스를 구현해야합니다. –