>  기사  >  Java  >  Java에서 X축을 중심으로 도형을 수직으로 회전하는 방법은 무엇입니까?

Java에서 X축을 중심으로 도형을 수직으로 회전하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-26 16:07:03545검색

How to Rotate a Shape Vertically Around the X-axis in Java?

X축을 중심으로 도형을 수직으로 회전하는 방법

2D 그래픽 작업을 하다 보면 도형을 회전시켜야 하는 경우가 많습니다. 축. 이는 변환 조합을 사용하여 달성할 수 있습니다.

x축을 중심으로 모양을 회전하는 한 가지 방법은 AffineTransform 클래스를 사용하는 것입니다. 이 클래스는 회전을 포함하여 모양에 대한 변형을 수행하기 위한 다양한 메서드를 제공합니다.

x축을 중심으로 모양을 회전하려면 AffineTransform 클래스의 Rotate() 메서드를 사용할 수 있습니다. 이 메서드는 두 가지 인수, 즉 라디안 단위의 회전 각도와 회전이 발생해야 하는 지점의 x 및 y 좌표를 사용합니다.

예를 들어 다음 코드는 x축을 중심으로 도형을 다음과 같이 회전합니다. 45도:

<code class="java">AffineTransform at = new AffineTransform();
at.rotate(Math.toRadians(45), x, y);</code>

AffineTransform 객체를 생성한 후에는 Shape 클래스의 변환() 메서드를 사용하여 도형에 적용할 수 있습니다. 이 메소드는 AffineTransform 개체를 인수로 사용하고 모양에 변환을 적용합니다.

예를 들어 다음 코드는 AffineTransform 개체를 다각형에 적용합니다.

<code class="java">Polygon polygon = new Polygon();
at.transform(polygon, polygon);</code>

일단 적용한 후 도형으로 변환하려면 Graphics2D 클래스의 draw() 메서드를 사용하여 그릴 수 있습니다.

예를 들어 다음 코드는 다각형을 그립니다.

<code class="java">Graphics2D g2d = (Graphics2D) g;
g2d.draw(polygon);</code>

Scaling 모양

모양을 회전하는 것 외에도 크기를 조정할 수도 있습니다. 이는 AffineTransform 클래스의 scale() 메서드를 사용하여 달성할 수 있습니다. 이 메서드는 x 및 y 배율 인수라는 두 가지 인수를 사용합니다.

예를 들어 다음 코드는 모양의 배율을 2배로 조정합니다.

<code class="java">at.scale(2, 2);</code>

배율 변환을 적용한 후 Graphics2D 클래스의 draw() 메서드를 사용하여 모양을 그릴 수 있습니다.

예를 들어 다음 코드는 크기가 조정된 다각형을 그립니다.

<code class="java">g2d.draw(polygon);</code>

변환 결합

AffineTransform 클래스의 concatenate() 메서드를 사용하여 여러 변환을 결합할 수 있습니다. 이 메서드는 다른 AffineTransform 개체를 인수로 사용하여 현재 변환에 적용합니다.

예를 들어 다음 코드는 회전 및 크기 조정 변환을 결합합니다.

<code class="java">at.concatenate(at2);</code>

변환의 경우 Shape 클래스의 변환() 메서드를 사용하여 모양에 적용할 수 있습니다.

예를 들어 다음 코드는 결합된 변환을 다각형에 적용합니다.

<code class="java">at.transform(polygon, polygon);</code>

한 번 결합된 변환을 모양에 적용한 경우 Graphics2D 클래스의 draw() 메서드를 사용하여 그릴 수 있습니다.

예를 들어 다음 코드는 변환된 다각형을 그립니다.

<code class="java">g2d.draw(polygon);</code>

위 내용은 Java에서 X축을 중심으로 도형을 수직으로 회전하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.