2010-01-19 6 views
0

Java 2D를 사용하여 여러 베 지어 곡선 (CubicCurve2D)을 함께 패치하여 "blob"을 만듭니다. 현재 내가 직면 한 문제는 다음과 같은 작업을 수행하는 방법입니다.Java 2D에서 복합 도형 만들기

  1. 블롭을 특정 색상으로 효율적으로 채 웁니다.
  2. 주어진 점이 얼룩의 안쪽에 있는지를 효율적으로 판단하십시오.

나는 thst "insideness"를 결정하기위한 다양한 contains 방법을 제공 CubicCurve2D 구현 Shape을 발견하고 Graphics2D 것을 (나는 ShapegetPathIterator 방법이 작업을 수행하는 데 사용하는 생각)을 fill(Shape)를 통해 Shape을 채울 수 있습니다.

나는이 메서드가 기본 PathIterator을 함께 연결함으로써 합성 된 Shape을 만들 수 있기를 바랬다. 그러나 내 모양에 두 개 이상의 CubicCurve2D이 포함되면 NoSuchElementException이 생성됩니다. 비록 내가 이것을 달성 할 수 있다고하더라도 나는 CubicCurve2D이 항상 볼록한면에 채워져 있고, "blob"은 오목한 볼록한 곡선으로 구성되어 있기 때문에 예상대로 작동하지 않을 것이라고 확신하지는 않습니다. "포함"문제는 지점이 합법적으로 블로 브 내에 있지만 개별 곡선 중 어느 곳에도 존재할 수 없기 때문에 더욱 어려워졌습니다. 올바른 방법으로이 문제를 접근

  • 오전 나는 (? Shape을 구현하려고) 또는 내가 모르고있어이이 작업을 수행하는 관용적 방법은 무엇입니까? 나는 기하학적 모양을 합성하는 문제가 상당히 일반적이라고 생각했을 것이다.
  • 누구든지이 문제를 해결하는 방법에 관한 제안 사항이 있습니까?

미리 감사드립니다.

답변

3

고객님의 질문에 대한 답변을 드릴 수는 없지만 복합 모양java/awt/geom/Area 클래스로 만들 수 있습니다.

+0

쿨 - 감사 피에르! 나는 그것을 조사 할 것이다. – Adamski

+0

Pierre - 고마워. 이것은 완벽하게 작동했습니다. – Adamski

1

해결 방법을 찾는 것이 올바른 방법입니다. 셰이프로 어셈블하려는 커브 모음이있는 경우 GeneralPath를 사용하는 것이 좋습니다. 필요에 따라 커브 또는 직선 선분을 추가하기 만하면됩니다. 다양한 추가 메소드를 보려면 인터페이스를 살펴보십시오. 또한 마지막 점을 시작점에 연결하여 도형을 '완료'할 수 있습니다.

일단 경로가 닫히면 사용할 수있는 contains()의 서로 다른 버전이 여러 가지 있습니다. 각 설명을 읽는 데 시간을 투자하십시오. 속도와 정확성의 측면에서 절충점이 있으므로, 귀하의 응용 프로그램에 따라 다릅니다.

또한 그것을 변환 경로에서 도형을 얻고, 그것을 채우기 위해 쉽고, 등