ホームページ  >  記事  >  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 軸を中心に回転させる必要があります。軸。これは、変換を組み合わせて使用​​することで実現できます。

X 軸を中心に図形を回転させる 1 つの方法は、AffineTransform クラスを使用することです。このクラスは、回転などのシェイプの変換を実行するためのさまざまなメソッドを提供します。

X 軸を中心にシェイプを回転するには、AffineTransform クラスのrotate() メソッドを使用できます。このメソッドは 2 つの引数を取ります。ラジアン単位の回転角度と、回転が行われる点の x 座標と y 座標です。

たとえば、次のコードは、x 軸を中心に図形を回転させます。 45 度:

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

AffineTransform オブジェクトを作成したら、Shape クラスのtransform() メソッドを使用してそれをシェイプに適用できます。このメソッドは、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>

スケーリング形状

形状を回転するだけでなく、拡大縮小することもできます。これは、AffineTransform クラスのscale() メソッドを使用して実現できます。このメソッドは、x と y のスケール係数という 2 つの引数を受け取ります。

たとえば、次のコードは、係数 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 クラスのtransform() メソッドを使用して、それらをシェイプに適用できます。

たとえば、次のコードは、結合された変換をポリゴンに適用します。

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

1 回組み合わせた変換をシェイプに適用したら、Graphics2D クラスのdraw() メソッドを使用して描画できます。

たとえば、次のコードは変換されたポリゴンを描画します。

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

以上がJavaでX軸を中心に図形を垂直に回転させる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。