Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

JavaFX 2D 객체의 다양한 연산: 합집합, 교집합, 차집합

JavaFX 2D 객체 연산이란?

JavaFX는 2D 객체에 대해 세 가지 기본 연산을 지원합니다. 바로 합집합(Union), 교집합(Intersection), 차집합(Subtraction)입니다. 이 연산들은 모두 javafx.scene.shape.Shape 클래스가 제공하는 정적(static) 메서드를 통해 수행되며, 연산 결과는 새로운 Shape 객체로 반환됩니다.

  • 합집합(Union) 연산 − 두 개 이상의 도형을 입력으로 받아, 해당 도형들이 차지하는 전체 영역을 하나의 도형으로 반환합니다.

  • 교집합(Intersection) 연산 − 두 개 이상의 도형을 입력으로 받아, 도형들이 서로 겹쳐지는 공통 영역만 반환합니다.

  • 차집합(Subtraction) 연산 − 두 개 이상의 도형을 입력으로 받아, 첫 번째 도형에서 두 번째 도형과 겹치는 부분을 제외한 나머지 영역을 반환합니다.

예제 코드

아래 예제에서는 세 쌍의 원을 만든 뒤, 각각 합집합·교집합·차집합 연산을 적용하고 그 결과를 화면에 표시합니다.

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Shape;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;

public class JavaFXOperations extends Application {
   public void start(Stage stage) {
      Font font = Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 12);

      // 합집합 연산용 원 두 개 생성
      Circle shape1 = new Circle(65.0f, 135.0f, 50.0f);
      Circle shape2 = new Circle(130.0f, 135.0f, 50.0f);

      // 합집합 연산 수행
      Shape union = Shape.union(shape1, shape2);
      union.setFill(Color.RED);

      Text label1 = new Text("Union Operation");
      label1.setFont(font);
      label1.setX(40);
      label1.setY(230);

      // 교집합 연산용 원 두 개 생성
      Circle shape3 = new Circle(250.0f, 135.0f, 50.0f);
      Circle shape4 = new Circle(325.0f, 135.0f, 50.0f);

      // 교집합 연산 수행
      Shape intersect = Shape.intersect(shape3, shape4);
      intersect.setFill(Color.RED);

      Text label2 = new Text("Intersect Operation");
      label2.setFont(font);
      label2.setX(225);
      label2.setY(230);

      // 차집합 연산용 원 두 개 생성
      Circle shape5 = new Circle(445.0f, 135.0f, 50.0f);
      Circle shape6 = new Circle(510.0f, 135.0f, 50.0f);

      // 차집합 연산 수행
      Shape subtract = Shape.subtract(shape5, shape6);
      subtract.setFill(Color.RED);

      Text label3 = new Text("Subtract Operation");
      label3.setFont(font);
      label3.setX(420);
      label3.setY(230);

      // 스테이지 설정
      Group root = new Group(
         shape1, shape2, shape3, shape4, shape5, shape6,
         union, intersect, subtract, label1, label2, label3
      );
      Scene scene = new Scene(root, 600, 300);
      stage.setTitle("2D Operations Example");
      stage.setScene(scene);
      stage.show();
   }

   public static void main(String args[]) {
      launch(args);
   }
}

실행 결과

프로그램을 실행하면 왼쪽부터 차례대로 합집합, 교집합, 차집합 연산의 결과가 빨간색 도형으로 표시됩니다. 합집합에서는 두 원이 하나로 합쳐진 형태가, 교집합에서는 두 원이 겹치는 렌즈 모양의 영역이, 차집합에서는 한쪽이 잘려나간 초승달 모양의 영역이 각각 나타납니다.

JavaFX 2D 객체의 다양한 연산: 합집합, 교집합, 차집합