|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
java.lang.Objectjava.awt.geom.AffineTransform
public class AffineTransform
AffineTransform
클래스는, 선의 직선성과 평행성을 유지한채로 2 차원 좌표간의 선형 매핑을 실행하는 2 차원 아핀 변환을 표현합니다. 아핀 변환은, 일련의 평행이동, 슬캘링, 반전, 회전, 변형에 의해 구성됩니다.
이러한 좌표변화는, 암묵으로 지정된 [ 0 0 1 ] 이라고 하는 맨 마지막 줄을 가지는 3 행× 3 열의 행렬에 의해 표현할 수 있습니다. 이 행렬은, 다음의 처리에 따라, 좌표를 열이라고 봐, 좌표 벡터를 행렬로 곱셈하는 것에 의해, 전송원좌표 (x, y)
를 전송처 좌표 (x', y')
로 변환합니다.
[ x'] [ m00 m01 m02 ] [ x ] [ m00x + m01y + m02 ] [ y'] = [ m10 m11 m12 ] [ y ] = [ m10x + m11y + m12 ] [ 1 ] [ 0 0 1 ] [ 1 ] [ 1 ]
AffineTransform
클래스의 rotate
메소드의 변화(variation)안에는, 배정밀도치의 인수로 회전 각도 (라디안)를 지정하는 것이 있습니다. 이러한 메소드에는, 약 90 번 ( 및 180 번, 270 번, 360 번등의 배수)의 회전에 대해서 특수한 처리가 준비되어 있어 일반적인 4분원 회전은 보다 효율적으로 처리됩니다. 이 특수한 처리에 의해, 90 번의 배수에 근사적인 각도를 정확하게 90 번의 배수로서 취급할 수가 있습니다. 90 번의 수배정도인 경우, 4분원 회전으로서 다루어지는 각도의 범위는 약 0.00000121 번의 폭입니다. 이 섹션에서는, 이러한 특수한 처리가 필요하게 되는 이유와 그 구현 방법에 대해 설명합니다.
90 번은 라디안으로 PI/2
와 나타내져 한편 PI 는 초월수 (그 때문에 무리수)이기 (위해)때문에, 90 번의 배수를 라디안으로 계측 된 유한의 배정밀도치로서 정확하게 나타낼 수 없습니다. 그 때문에, 유한의 배수도치를 사용해 4분원 회전 (90, 180, 270, 360 도)을 표현하는 것은 이론적으로 불가능합니다. 배정밀도 부동 소수점치를 사용하면,PI/2
의 배수 (0 이외)에 매우 가까운 값을 얻을 수 있습니다만, 정현 (sin) 또는 여현 (cos)으로 정확하게 0.0, 1.0, 또는 -1. 0 을 얻으려면 충분히 가깝다고는 말할 수 없습니다. 그 때문에,Math.sin()
및 Math.cos()
의 구현에서는,Math.sin(0.0)
의 경우를 제외해 0.0 을 돌려줄 것은 없습니다. 다만 같은 구현이어도, 90 번의 배수 마다 일정 범위내의 값에 대해서는, 정확히 1.0 및 -1. 0 을 돌려줍니다. 이것은, 올바른 응답이 1.0 또는 -1. 0 에 매우 가깝기 때문에, 배정밀도의 유효 숫자에서는, 0.0 에 가까운 값의 경우와 동일한 정도의 정확함으로 차이를 나타낼 수가 없기 때문입니다.
이러한 문제에 의한 최종 결과적으로,Math.sin()
메소드 및 Math.cos()
메소드가 이러한 라디안 베이스의 회전 조작중에 발생하는 행렬의 변경에 대해서 값을 직접 생성하기 위해서 사용되는 경우는, 정현 및 여현으로 취득되는 0.0 이외의 값이 원인으로 행렬이 조금 다르기 (위해)때문에, 얻을 수 있는 변형은 rotate(Math.PI/2. 0)
과 같이 간단한 경우여도 4분원 회전으로서 엄밀하게 분류되지 않습니다. 이러한 변형이 4분원 회전으로서 분류되지 않는 경우, 변형의 종류에 근거해 후속의 조작을 최적화하려고 하는 그 이후의 코드는, 가장 범용적인 구현에 위탁됩니다.
4분원 회전은 매우 자주(잘) 행해지는 조작이기 (위해)때문에, 회전을 변형에 적용하는 경우와 얻을 수 있던 변형을 좌표에 적용하는 경우의 양쪽 모두로, 이 클래스는 4분원 회전을 어느 정도 빨리 처리할 수 없으면 안됩니다. 이러한 최적화 처리를 실현하기 위해서(때문에), 라디안으로 계측 된 회전 각도를 사용하는 메소드에서는, 4분원 회전을 의도한 각도를 검출하면(자), 4분원 회전으로서 취급합니다. 그 때문에 이러한 메소드에서는,Math.sin(theta)
와 Math.cos(theta)
중 한쪽이 정확하게 1.0 또는 -1. 0 을 돌려주는 경우에, 각도 theta 를 4분원 회전으로서 취급합니다. 기준으로서Math.PI/2. 0
의 수배정도의 경우에, 이 프로퍼티은 약 0.0000000211 라디안 (또는 0.00000121 번)의 범위에서 true 를 보관 유지합니다.
필드의 개요 | |
---|---|
static int |
TYPE_FLIP
이 flag bit는, 이 객체에 의해 정의되는 변환이, 다른 flag bit에 의해 지정되는 변환에 가세해, 어느 축을 중심으로 하는 경상반전을 실행하는 것을 나타냅니다. |
static int |
TYPE_GENERAL_ROTATION
이 flag bit는, 이 객체에 의해 정의되는 변환이, 다른 flag bit에 의해 지정되는 변환에 가세해, 임의의 각도에 의한 회전을 실행하는 것을 나타냅니다. |
static int |
TYPE_GENERAL_SCALE
이 flag bit는, 이 객체에 의해 정의되는 변환이, 다른 flag bit에 의해 지정되는 변환에 가세해, 범용적인 슬캘링을 실행하는 것을 나타냅니다. |
static int |
TYPE_GENERAL_TRANSFORM
이 정수는, 이 객체에 의해 정의되는 변환이, 입력 좌표의 임의의 변환을 실행하는 것을 나타냅니다. |
static int |
TYPE_IDENTITY
이 정수는, 이 객체에 의해 정의되는 변환이 항등변환인 것을 나타냅니다. |
static int |
TYPE_MASK_ROTATION
이 정수는, 회전 flag bit의 몇개의 비트 마스크입니다. |
static int |
TYPE_MASK_SCALE
이 정수는, 스케일 flag bit의 몇개의 비트 마스크입니다. |
static int |
TYPE_QUADRANT_ROTATION
이 flag bit는, 이 객체에 의해 정의되는 변환이, 다른 flag bit에 의해 지정되는 변환에 가세해, 90 번의 배수에 4분원 회전을 실행하는 것을 나타냅니다. |
static int |
TYPE_TRANSLATION
이 flag bit는, 이 객체에 의해 정의되는 변환이, 다른 flag bit에 의해 지정되는 변환에 가세해, 1 개의 이동을 실행하는 것을 나타냅니다. |
static int |
TYPE_UNIFORM_SCALE
이 flag bit는, 이 객체에 의해 정의되는 변환이, 다른 flag bit에 의해 지정되는 변환에 가세해, 한결같은 슬캘링을 실행하는 것을 나타냅니다. |
생성자 의 개요 | |
---|---|
AffineTransform ()
항등변환을 표현하는 새로운 AffineTransform 를 구축합니다. |
|
AffineTransform (AffineTransform Tx)
지정된 AffineTransform 객체의 카피인, 새로운 AffineTransform 를 구축합니다. |
|
AffineTransform (double[] flatmatrix)
3×3 변환 행렬의 4 개의 비평행이동 엔트리 또는 6 개의 지정 가능 엔트리의 어느 쪽인지를 표현하는 배정밀도치의 배열로부터, 새로운 AffineTransform 를 구축합니다. |
|
AffineTransform (double m00,
double m10,
double m01,
double m11,
double m02,
double m12)
3×3 변환 행렬의 6 개의 지정 가능 엔트리를 표현하는 6 개의 배정밀도치로부터, 새로운 AffineTransform 를 구축합니다. |
|
AffineTransform (float[] flatmatrix)
3×3 변환 행렬의 4 개의 비평행이동 엔트리 또는 6 개의 지정 가능 엔트리의 어느 쪽인지를 표현하는 부동 소수점치의 배열로부터, 새로운 AffineTransform 를 구축합니다. |
|
AffineTransform (float m00,
float m10,
float m01,
float m11,
float m02,
float m12)
3×3 변환 행렬의 6 개의 지정 가능 엔트리를 표현하는 6 개의 부동 소수점치로부터, 새로운 AffineTransform 를 구축합니다. |
메소드의 개요 | |
---|---|
Object |
clone ()
이 AffineTransform 객체의 카피를 돌려줍니다. |
void |
concatenate (AffineTransform Tx)
Tx 에 의해 원의 사용자 공간에 맵 된 새로운 사용자 공간을 제공하기 위해서 가장 일반적으로 사용되는 방법으로,AffineTransform Tx 를 이 AffineTransform Cx 에 연결합니다. |
AffineTransform |
createInverse ()
역변환을 표현하는 AffineTransform 객체를 돌려줍니다. |
Shape |
createTransformedShape (Shape pSrc)
지정된 Shape 를 이 변환에 의해 변환해, 그 Shape 의 기하학적 도형에 의해 정의되는 새로운 Shape 객체를 돌려줍니다. |
void |
deltaTransform (double[] srcPts,
int srcOff,
double[] dstPts,
int dstOff,
int numPts)
이 변환에 의해 상대적인 거리 벡터의 배열을 변환합니다. |
Point2D |
deltaTransform (Point2D ptSrc,
Point2D ptDst)
ptSrc 에 의해 지정되는 상대적인 거리 벡터를 변환해, 그 결과를 ptDst 에 포함합니다. |
boolean |
equals (Object obj)
이 AffineTransform 이, 지정된 인수와 같은 아핀 좌표변화를 표현하는 경우에 true 를 돌려줍니다. |
double |
getDeterminant ()
변환의 행렬 표현의 행렬식을 돌려줍니다. |
void |
getMatrix (double[] flatmatrix)
3×3 아핀 변환 행렬내의 6 개의 지정 가능한 값을 꺼내, 배정밀도치의 배열에 배치합니다. |
static AffineTransform |
getQuadrantRotateInstance (int numquadrants)
지정된 수의 4분원만 좌표를 회전시키는 변환을 돌려줍니다. |
static AffineTransform |
getQuadrantRotateInstance (int numquadrants,
double anchorx,
double anchory)
지정된 엥커 포인트를 중심으로 해, 지정된 수의 4분원만 좌표를 회전시키는 변환을 돌려줍니다. |
static AffineTransform |
getRotateInstance (double theta)
회전 변환을 표현하는 변환을 돌려줍니다. |
static AffineTransform |
getRotateInstance (double vecx,
double vecy)
회전 벡터에 따라 좌표를 회전시키는 변환을 돌려줍니다. |
static AffineTransform |
getRotateInstance (double theta,
double anchorx,
double anchory)
엥커 포인트를 중심으로 해 좌표를 회전시키는 변환을 돌려줍니다. |
static AffineTransform |
getRotateInstance (double vecx,
double vecy,
double anchorx,
double anchory)
회전 벡터에 따라, 엥커 포인트를 중심으로 해 좌표를 회전시키는 변환을 돌려줍니다. |
static AffineTransform |
getScaleInstance (double sx,
double sy)
슬캘링 변환을 표현하는 변환을 돌려줍니다. |
double |
getScaleX ()
3×3 아핀 변환 행렬의 X 좌표 슬캘링 요소 (m00)를 돌려줍니다. |
double |
getScaleY ()
3×3 아핀 변환 행렬의 Y 좌표 슬캘링 요소 (m11)를 돌려줍니다. |
static AffineTransform |
getShearInstance (double shx,
double shy)
셔링 변환을 표현하는 변환을 돌려줍니다. |
double |
getShearX ()
3×3 아핀 변환 행렬의 X 좌표 셔링 요소 (m01)를 돌려줍니다. |
double |
getShearY ()
3×3 아핀 변환 행렬의 Y 좌표 셔링 요소 (m10)를 돌려줍니다. |
static AffineTransform |
getTranslateInstance (double tx,
double ty)
평행이동 변환을 표현하는 변환을 돌려줍니다. |
double |
getTranslateX ()
3×3 아핀 변환 행렬의 평행이동 요소 (m02)의 X 좌표를 돌려줍니다. |
double |
getTranslateY ()
3×3 아핀 변환 행렬의 평행이동 요소 (m12)의 Y 좌표를 돌려줍니다. |
int |
getType ()
이 변환의 변환 프로퍼티을 기술하는 flag bit를 돌려줍니다. |
int |
hashCode ()
이 변환의 해시 코드를 돌려줍니다. |
void |
inverseTransform (double[] srcPts,
int srcOff,
double[] dstPts,
int dstOff,
int numPts)
이 변환에 의해 배정밀도의 좌표의 배열을 역변환합니다. |
Point2D |
inverseTransform (Point2D ptSrc,
Point2D ptDst)
지정된 ptSrc 를 역변환해, 그 결과를 ptDst 에 포함합니다. |
void |
invert ()
이 변환을 자신의 역변환으로 설정합니다. |
boolean |
isIdentity ()
이 AffineTransform 이 항등변환인 경우에 true 를 돌려줍니다. |
void |
preConcatenate (AffineTransform Tx)
Tx 가 기존의 사용자 공간은 아니고 절대 픽셀 공간을 기준(�좌표변화를 변경하는 등 일반적으로는 그다지 사용되지 않는 방법으로,AffineTransform Tx 를 이 AffineTransform Cx 에 연결합니다. |
void |
quadrantRotate (int numquadrants)
이 변환을, 지정된 수의 4분원만 좌표를 회전시키는 변환과 연결합니다. |
void |
quadrantRotate (int numquadrants,
double anchorx,
double anchory)
이 변환을, 지정된 엥커 포인트를 중심으로 해, 지정된 수의 4분원만 좌표를 회전시키는 변환과 연결합니다. |
void |
rotate (double theta)
이 변환을 회전 변환에 연결합니다. |
void |
rotate (double vecx,
double vecy)
이 변환을, 회전 벡터에 따라 좌표를 회전시키는 변환과 연결합니다. |
void |
rotate (double theta,
double anchorx,
double anchory)
이 변환을, 엥커 포인트를 중심으로 해 좌표를 회전하는 변환과 연결합니다. |
void |
rotate (double vecx,
double vecy,
double anchorx,
double anchory)
이 변환을, 회전 벡터에 따라, 엥커 포인트를 중심으로 해 좌표를 회전시키는 변환과 연결합니다. |
void |
scale (double sx,
double sy)
이 변환을 슬캘링 변환에 연결합니다. |
void |
setToIdentity ()
이 변환을 항등변환으로 다시 설정합니다. |
void |
setToQuadrantRotation (int numquadrants)
이 변환을, 지정된 수의 4분원만 좌표를 회전시키는 회전 변환으로 설정합니다. |
void |
setToQuadrantRotation (int numquadrants,
double anchorx,
double anchory)
이 변환을, 지정된 엥커 포인트를 중심으로 해, 지정된 수의 4분원만 좌표를 회전시키는, 평행이동 후의 회전 변환으로 설정합니다. |
void |
setToRotation (double theta)
이 변환을 회전 변환으로 설정합니다. |
void |
setToRotation (double vecx,
double vecy)
이 변환을, 회전 벡터에 따라 좌표를 회전시키는 회전 변환으로 설정합니다. |
void |
setToRotation (double theta,
double anchorx,
double anchory)
이 변환을 평행이동 후의 회전 변환으로 설정합니다. |
void |
setToRotation (double vecx,
double vecy,
double anchorx,
double anchory)
이 변환을, 회전 벡터에 따라, 엥커 포인트를 중심으로 해 좌표를 회전시키는 회전 변환으로 설정합니다. |
void |
setToScale (double sx,
double sy)
이 변환을 슬캘링 변환으로 설정합니다. |
void |
setToShear (double shx,
double shy)
이 변환을 셔링 변환으로 설정합니다. |
void |
setToTranslation (double tx,
double ty)
이 변환을 평행이동 변환으로 설정합니다. |
void |
setTransform (AffineTransform Tx)
이 변환을, 지정된 AffineTransform 객체내의 변환의 카피로 설정합니다. |
void |
setTransform (double m00,
double m10,
double m01,
double m11,
double m02,
double m12)
이 변환을 6 개의 배정밀도치에 의해 지정되고 있는 행렬로 설정합니다. |
void |
shear (double shx,
double shy)
이 변환을 셔링 변환에 연결합니다. |
String |
toString ()
이 Object 의 값을 나타내는 String 를 돌려줍니다. |
void |
transform (double[] srcPts,
int srcOff,
double[] dstPts,
int dstOff,
int numPts)
이 변환에 의해, 배정밀도의 좌표의 배열을 변환합니다. |
void |
transform (double[] srcPts,
int srcOff,
float[] dstPts,
int dstOff,
int numPts)
이 변환에 의해 배정밀도의 좌표의 배열을 변환해, 결과를 float 치의 배열에 포함합니다. |
void |
transform (float[] srcPts,
int srcOff,
double[] dstPts,
int dstOff,
int numPts)
이 변환에 의해 부동 소수점의 좌표의 배열을 변환해, 결과를 double 치의 배열에 포함합니다. |
void |
transform (float[] srcPts,
int srcOff,
float[] dstPts,
int dstOff,
int numPts)
이 변환에 의해, 부동 소수점의 좌표의 배열을 변환합니다. |
void |
transform (Point2D [] ptSrc,
int srcOff,
Point2D [] ptDst,
int dstOff,
int numPts)
이 변환에 의해 포인트 객체의 배열을 변환합니다. |
Point2D |
transform (Point2D ptSrc,
Point2D ptDst)
지정된 ptSrc 를 변환해, 그 결과를 ptDst 에 포함합니다. |
void |
translate (double tx,
double ty)
이 변환을 평행이동 변환에 연결합니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
finalize , getClass , notify , notifyAll , wait , wait , wait |
필드의 상세 |
---|
public static final int TYPE_IDENTITY
TYPE_TRANSLATION
,
TYPE_UNIFORM_SCALE
,
TYPE_GENERAL_SCALE
,
TYPE_FLIP
,
TYPE_QUADRANT_ROTATION
,
TYPE_GENERAL_ROTATION
,
TYPE_GENERAL_TRANSFORM
,
getType()
,
정수 필드치 public static final int TYPE_TRANSLATION
TYPE_IDENTITY
,
TYPE_UNIFORM_SCALE
,
TYPE_GENERAL_SCALE
,
TYPE_FLIP
,
TYPE_QUADRANT_ROTATION
,
TYPE_GENERAL_ROTATION
,
TYPE_GENERAL_TRANSFORM
,
getType()
,
정수 필드치 public static final int TYPE_UNIFORM_SCALE
TYPE_IDENTITY
,
TYPE_TRANSLATION
,
TYPE_GENERAL_SCALE
,
TYPE_FLIP
,
TYPE_QUADRANT_ROTATION
,
TYPE_GENERAL_ROTATION
,
TYPE_GENERAL_TRANSFORM
,
getType()
,
정수 필드치 public static final int TYPE_GENERAL_SCALE
TYPE_IDENTITY
,
TYPE_TRANSLATION
,
TYPE_UNIFORM_SCALE
,
TYPE_FLIP
,
TYPE_QUADRANT_ROTATION
,
TYPE_GENERAL_ROTATION
,
TYPE_GENERAL_TRANSFORM
,
getType()
,
정수 필드치 public static final int TYPE_MASK_SCALE
TYPE_UNIFORM_SCALE
,
TYPE_GENERAL_SCALE
,
정수 필드치 public static final int TYPE_FLIP
TYPE_IDENTITY
,
TYPE_TRANSLATION
,
TYPE_UNIFORM_SCALE
,
TYPE_GENERAL_SCALE
,
TYPE_QUADRANT_ROTATION
,
TYPE_GENERAL_ROTATION
,
TYPE_GENERAL_TRANSFORM
,
getType()
,
정수 필드치 public static final int TYPE_QUADRANT_ROTATION
TYPE_IDENTITY
,
TYPE_TRANSLATION
,
TYPE_UNIFORM_SCALE
,
TYPE_GENERAL_SCALE
,
TYPE_FLIP
,
TYPE_GENERAL_ROTATION
,
TYPE_GENERAL_TRANSFORM
,
getType()
,
정수 필드치 public static final int TYPE_GENERAL_ROTATION
TYPE_IDENTITY
,
TYPE_TRANSLATION
,
TYPE_UNIFORM_SCALE
,
TYPE_GENERAL_SCALE
,
TYPE_FLIP
,
TYPE_QUADRANT_ROTATION
,
TYPE_GENERAL_TRANSFORM
,
getType()
,
정수 필드치 public static final int TYPE_MASK_ROTATION
TYPE_QUADRANT_ROTATION
,
TYPE_GENERAL_ROTATION
,
정수 필드치 public static final int TYPE_GENERAL_TRANSFORM
TYPE_IDENTITY
,
TYPE_TRANSLATION
,
TYPE_UNIFORM_SCALE
,
TYPE_GENERAL_SCALE
,
TYPE_FLIP
,
TYPE_QUADRANT_ROTATION
,
TYPE_GENERAL_ROTATION
,
getType()
,
정수 필드치 생성자 의 상세 |
---|
public AffineTransform()
AffineTransform
를 구축합니다.
public AffineTransform(AffineTransform Tx)
AffineTransform
객체의 카피인, 새로운 AffineTransform
를 구축합니다.
Tx
- 카피하는 AffineTransform
객체public AffineTransform(float m00, float m10, float m01, float m11, float m02, float m12)
AffineTransform
를 구축합니다.
m00
- 3×3 행렬의 X 좌표 슬캘링 요소m10
- 3×3 행렬의 Y 좌표 셔링 요소m01
- 3×3 행렬의 X 좌표 셔링 요소m11
- 3×3 행렬의 Y 좌표 슬캘링 요소m02
- 3×3 행렬의 X 좌표 평행이동 요소m12
- 3×3 행렬의 Y 좌표 평행이동 요소public AffineTransform(float[] flatmatrix)
AffineTransform
를 구축합니다. 각 치는, 배열로부터 { m00 m10 m01 m11 [m02 m12]} 라고 하는 형식에서 꺼내집니다.
flatmatrix
- 새로운 AffineTransform
객체로 설정된다
각 치를 포함하고 있는 float 치의 배열. 배열의 길이는
4 이상으로 보여진다. 배열의 길이가
6 보다 작은 경우, 최초의 4 개의 값만이 취득된다. 배열의
길이가 6 보다 큰 경우, 최초의 6 개의 값이 취득되는public AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12)
AffineTransform
를 구축합니다.
m00
- 3×3 행렬의 X 좌표 슬캘링 요소m10
- 3×3 행렬의 Y 좌표 셔링 요소m01
- 3×3 행렬의 X 좌표 셔링 요소m11
- 3×3 행렬의 Y 좌표 슬캘링 요소m02
- 3×3 행렬의 X 좌표 평행이동 요소m12
- 3×3 행렬의 Y 좌표 평행이동 요소public AffineTransform(double[] flatmatrix)
AffineTransform
를 구축합니다. 각 치는, 배열로부터 { m00 m10 m01 m11 [m02 m12]} 라고 하는 형식에서 꺼내집니다.
flatmatrix
- 새로운 AffineTransform
객체로 설정된다
각 치를 포함하고 있는 double 치의 배열. 배열의 길이는
4 이상으로 보여진다. 배열의 길이가
6 보다 작은 경우, 최초의 4 개의 값만이 취득된다. 배열의
길이가 6 보다 큰 경우, 최초의 6 개의 값이 취득되는메소드의 상세 |
---|
public static AffineTransform getTranslateInstance(double tx, double ty)
[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]
tx
- 좌표가 X 축방향으로 평행이동 된다
거리ty
- 좌표가 Y 축방향으로 평행이동 된다
거리
AffineTransform
객체public static AffineTransform getRotateInstance(double theta)
[ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]정의 각도 theta 로 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다. 전술의 「90 번 회전의 처리」의 설명도 참조해 주세요.
theta
- 라디안으로 계측 한 회전 각도
AffineTransform
객체public static AffineTransform getRotateInstance(double theta, double anchorx, double anchory)
이 조작은, 다음의 일련의 호출해에 상당합니다.
AffineTransform Tx = new AffineTransform(); Tx.translate(anchorx, anchory); // S3: final translation Tx.rotate(theta); // S2:rotate around anchor Tx.translate(-anchorx, -anchory); // S1:translate anchor to origin반환되는 변환의 행렬 표현은, 다음과 같이 됩니다.
[ cos(theta) -sin(theta) x-x*cos+y*sin ] [ sin(theta) cos(theta) y-x*sin-y*cos ] [ 0 0 1 ]정의 각도 theta 로 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다. 전술의 「90 번 회전의 처리」의 설명도 참조해 주세요.
theta
- 라디안으로 계측 한 회전 각도anchorx
- 회전의 엥커 포인트의 X 좌표anchory
- 회전의 엥커 포인트의 Y 좌표
AffineTransform
객체public static AffineTransform getRotateInstance(double vecx, double vecy)
vecx
와 vecy
의 양쪽 모두가 0.0 의 경우, 항등변환이 돌려주어집니다. 이 조작은, 이하를 호출하는 것과 동등합니다.
AffineTransform.getRotateInstance(Math.atan2(vecy, vecx));
vecx
- 회전 벡터의 X 좌표vecy
- 회전 벡터의 Y 좌표
AffineTransform
객체public static AffineTransform getRotateInstance(double vecx, double vecy, double anchorx, double anchory)
vecx
와 vecy
의 양쪽 모두가 0.0 의 경우, 항등변환이 돌려주어집니다. 이 조작은, 이하를 호출하는 것과 동등합니다.
AffineTransform.getRotateInstance(Math.atan2(vecy, vecx), anchorx, anchory);
vecx
- 회전 벡터의 X 좌표vecy
- 회전 벡터의 Y 좌표anchorx
- 회전의 엥커 포인트의 X 좌표anchory
- 회전의 엥커 포인트의 Y 좌표
AffineTransform
객체public static AffineTransform getQuadrantRotateInstance(int numquadrants)
AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0);정의 수의 4분원만 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다.
numquadrants
- 회전시키는 90 번의 호의 수
AffineTransform
객체public static AffineTransform getQuadrantRotateInstance(int numquadrants, double anchorx, double anchory)
AffineTransform.getRotateInstance(numquadrants * Math.PI / 2.0, anchorx, anchory);정의 수의 4분원만 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다.
numquadrants
- 회전시키는 90 번의 호의 수anchorx
- 회전의 엥커 포인트의 X 좌표anchory
- 회전의 엥커 포인트의 Y 좌표
AffineTransform
객체public static AffineTransform getScaleInstance(double sx, double sy)
[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]
sx
- 좌표를 X 축방향으로 슬캘링 하기 위해서
사용하는 계수sy
- 좌표를 Y 축방향으로 슬캘링 하기 위해서
사용하는 계수
AffineTransform
객체public static AffineTransform getShearInstance(double shx, double shy)
[ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]
shx
- Y 좌표의 계수로 좌표를 정의 X 축의
방향으로 이동하기 위해서(때문에) 사용하는 승수shy
- X 좌표의 계수로 좌표를 정의 Y 축의
방향으로 이동하기 위해서(때문에) 사용하는 승수
AffineTransform
객체public int getType()
TYPE_IDENTITY
,
TYPE_TRANSLATION
,
TYPE_UNIFORM_SCALE
,
TYPE_GENERAL_SCALE
,
TYPE_QUADRANT_ROTATION
,
TYPE_GENERAL_ROTATION
,
TYPE_GENERAL_TRANSFORM
public double getDeterminant()
행렬식이 제로가 아닌 경우, 이 변환에는 역변환이 존재해, 역변환에 의존하는 다양한 메소드는 NoninvertibleTransformException
를 throw 할 필요가 없습니다. 행렬식이 제로의 경우, 이 변환은 모든 입력 좌표를 선 또는 점에 맵 하므로 역변환할 수 없습니다. 행렬식이 충분히 제로에 가까운 경우, 역변환 오퍼레이션은 의미가 있는 결과를 낼 수 있을 뿐(만큼)의 정밀도를 확보 가능한 있고 경우가 있습니다.
getType
메소드로 나타나도록(듯이), 이 변환이 한결같은 슬캘링을 표현하는 경우, 행렬식은 모든 점이 원점을 기준에 확장 또는 축소되는 한결같은 슬캘링 계수의 2 승을 나타냅니다. 이 변환이 한결같지 않은 슬캘링 또는보다 범용적인 변환을 표현하는 경우, 행렬식이 나타내는 값은, 역변환이 가능한가 어떤가를 판정하기 위해(때문에)인 만큼 사용할 수 있습니다.
산술적으로, 행렬식은 다음의 공식에서 계산됩니다.
| m00 m01 m02 | | m10 m11 m12 | = m00 * m11 - m01 * m10 | 0 0 1 |
getType()
,
createInverse()
,
inverseTransform(java.awt.geom.Point2D, java.awt.geom.Point2D)
,
TYPE_UNIFORM_SCALE
public void getMatrix(double[] flatmatrix)
flatmatrix
- 반환값을 포함하기 위해서 사용하는 double 치의
배열getScaleX()
,
getScaleY()
,
getShearX()
,
getShearY()
,
getTranslateX()
,
getTranslateY()
public double getScaleX()
getMatrix(double[])
public double getScaleY()
getMatrix(double[])
public double getShearX()
getMatrix(double[])
public double getShearY()
getMatrix(double[])
public double getTranslateX()
getMatrix(double[])
public double getTranslateY()
getMatrix(double[])
public void translate(double tx, double ty)
AffineTransform
입니다.
[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]
tx
- 좌표가 X 축방향으로 평행이동 된다
거리ty
- 좌표가 Y 축방향으로 평행이동 된다
거리public void rotate(double theta)
AffineTransform
입니다.
[ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]정의 각도 theta 로 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다. 전술의 「90 번 회전의 처리」의 설명도 참조해 주세요.
theta
- 라디안으로 계측 한 회전 각도public void rotate(double theta, double anchorx, double anchory)
이 조작은, 다음의 일련의 호출해에 상당합니다.
translate(anchorx, anchory); // S3:final translation rotate(theta); // S2:rotate around anchor translate(-anchorx, -anchory); // S1:translate anchor to origin정의 각도 theta 로 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다. 전술의 「90 번 회전의 처리」의 설명도 참조해 주세요.
theta
- 라디안으로 계측 한 회전 각도anchorx
- 회전의 엥커 포인트의 X 좌표anchory
- 회전의 엥커 포인트의 Y 좌표public void rotate(double vecx, double vecy)
vecx
와 vecy
의 양쪽 모두가 0.0 의 경우, 이 변환에 추가의 회전은 행해지지 않습니다. 이 조작은, 이하를 호출하는 것과 동등합니다.
rotate(Math.atan2(vecy, vecx));
vecx
- 회전 벡터의 X 좌표vecy
- 회전 벡터의 Y 좌표public void rotate(double vecx, double vecy, double anchorx, double anchory)
vecx
와 vecy
의 양쪽 모두가 0.0 의 경우, 변환은 결코 변경되지 않습니다. 이 메소드는, 이하를 호출하는 것과 동등합니다.
rotate(Math.atan2(vecy, vecx), anchorx, anchory);
vecx
- 회전 벡터의 X 좌표vecy
- 회전 벡터의 Y 좌표anchorx
- 회전의 엥커 포인트의 X 좌표anchory
- 회전의 엥커 포인트의 Y 좌표public void quadrantRotate(int numquadrants)
rotate(numquadrants * Math.PI / 2.0);정의 수의 4분원만 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다.
numquadrants
- 회전시키는 90 번의 호의 수public void quadrantRotate(int numquadrants, double anchorx, double anchory)
rotate(numquadrants * Math.PI / 2.0, anchorx, anchory);정의 수의 4분원만 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다.
numquadrants
- 회전시키는 90 번의 호의 수anchorx
- 회전의 엥커 포인트의 X 좌표anchory
- 회전의 엥커 포인트의 Y 좌표public void scale(double sx, double sy)
AffineTransform
입니다.
[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]
sx
- 좌표를 X 축방향으로 슬캘링 하기 위해서
사용하는 계수sy
- 좌표를 Y 축방향으로 슬캘링 하기 위해서
사용하는 계수public void shear(double shx, double shy)
AffineTransform
입니다.
[ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]
shx
- Y 좌표의 계수로 좌표를 정의 X 축의
방향으로 이동하기 위해서(때문에) 사용하는 승수shy
- X 좌표의 계수로 좌표를 정의 Y 축의
방향으로 이동하기 위해서(때문에) 사용하는 승수public void setToIdentity()
public void setToTranslation(double tx, double ty)
[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]
tx
- 좌표가 X 축방향으로 평행이동 된다
거리ty
- 좌표가 Y 축방향으로 평행이동 된다
거리public void setToRotation(double theta)
[ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]정의 각도 theta 로 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다. 전술의 「90 번 회전의 처리」의 설명도 참조해 주세요.
theta
- 라디안으로 계측 한 회전 각도public void setToRotation(double theta, double anchorx, double anchory)
이 조작은, 다음의 일련의 호출해에 상당합니다.
setToTranslation(anchorx, anchory); // S3:final translation rotate(theta); // S2:rotate around anchor translate(-anchorx, -anchory); // S1:translate anchor to origin이 변환을 표현하는 행렬은 다음과 같이 됩니다.
[ cos(theta) -sin(theta) x-x*cos+y*sin ] [ sin(theta) cos(theta) y-x*sin-y*cos ] [ 0 0 1 ]정의 각도 theta 로 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다. 전술의 「90 번 회전의 처리」의 설명도 참조해 주세요.
theta
- 라디안으로 계측 한 회전 각도anchorx
- 회전의 엥커 포인트의 X 좌표anchory
- 회전의 엥커 포인트의 Y 좌표public void setToRotation(double vecx, double vecy)
vecx
와 vecy
의 양쪽 모두가 0.0 의 경우, 변환은 항등변환으로 설정됩니다. 이 조작은, 이하를 호출하는 것과 동등합니다.
setToRotation(Math.atan2(vecy, vecx));
vecx
- 회전 벡터의 X 좌표vecy
- 회전 벡터의 Y 좌표public void setToRotation(double vecx, double vecy, double anchorx, double anchory)
vecx
와 vecy
의 양쪽 모두가 0.0 의 경우, 변환은 항등변환으로 설정됩니다. 이 조작은, 이하를 호출하는 것과 동등합니다.
setToTranslation(Math.atan2(vecy, vecx), anchorx, anchory);
vecx
- 회전 벡터의 X 좌표vecy
- 회전 벡터의 Y 좌표anchorx
- 회전의 엥커 포인트의 X 좌표anchory
- 회전의 엥커 포인트의 Y 좌표public void setToQuadrantRotation(int numquadrants)
setToRotation(numquadrants * Math.PI / 2.0);정의 수의 4분원만 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다.
numquadrants
- 회전시키는 90 번의 호의 수public void setToQuadrantRotation(int numquadrants, double anchorx, double anchory)
setToRotation(numquadrants * Math.PI / 2.0, anchorx, anchory);정의 수의 4분원만 회전하면(자), 정의 X 축의 점이 정의 Y 축으로 향해 회전합니다.
numquadrants
- 회전시키는 90 번의 호의 수anchorx
- 회전의 엥커 포인트의 X 좌표anchory
- 회전의 엥커 포인트의 Y 좌표public void setToScale(double sx, double sy)
[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]
sx
- 좌표를 X 축방향으로 슬캘링 하기 위해서
사용하는 계수sy
- 좌표를 Y 축방향으로 슬캘링 하기 위해서
사용하는 계수public void setToShear(double shx, double shy)
[ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]
shx
- Y 좌표의 계수로 좌표를 정의 X 축의
방향으로 이동하기 위해서(때문에) 사용하는 승수shy
- X 좌표의 계수로 좌표를 정의 Y 축의
방향으로 이동하기 위해서(때문에) 사용하는 승수public void setTransform(AffineTransform Tx)
AffineTransform
객체내의 변환의 카피로 설정합니다.
Tx
- 변환의 카피원의 AffineTransform
객체public void setTransform(double m00, double m10, double m01, double m11, double m02, double m12)
m00
- 3×3 행렬의 X 좌표 슬캘링 요소m10
- 3×3 행렬의 Y 좌표 셔링 요소m01
- 3×3 행렬의 X 좌표 셔링 요소m11
- 3×3 행렬의 Y 좌표 슬캘링 요소m02
- 3×3 행렬의 X 좌표 평행이동 요소m12
- 3×3 행렬의 Y 좌표 평행이동 요소public void concatenate(AffineTransform Tx)
Tx
에 의해 원의 사용자 공간에 맵 된 새로운 사용자 공간을 제공하기 위해서 가장 일반적으로 사용되는 방법으로,AffineTransform
Tx
를 이 AffineTransform
Cx 에 연결합니다. Cx 를 갱신하면(자), 결합된 변환을 실행할 수 있습니다. 갱신된 변환 Cx'로 점 p 를 변환하는 것은, 최초로 Tx
로 p 를 변환하고 나서, 그 결과를 원의 변환 Cx 로 변환하는 것에 상당합니다. 즉, Cx'(p) = Cx(Tx(p))입니다. 행렬 표기에서는, 이 변환 Cx 가 행렬 [this] 로 표현되어Tx
가 행렬 [Tx] 로 표현되는 경우, 이 메소드는 다음의 처리를 실시합니다.
[this] = [this] x [Tx]
Tx
- 이 AffineTransform
객체에
연결되는 AffineTransform
객체preConcatenate(java.awt.geom.AffineTransform)
public void preConcatenate(AffineTransform Tx)
Tx
가 기존의 사용자 공간은 아니고 절대 픽셀 공간을 기준(�좌표변화를 변경하는 등 일반적으로는 그다지 사용되지 않는 방법으로,AffineTransform
Tx
를 이 AffineTransform
Cx 에 연결합니다. Cx 를 갱신하면(자), 결합된 변환을 실행할 수 있습니다. 갱신된 변환 Cx'로 점 p 를 변환하는 것은, 최초로 원의 변환 Cx 로 p 를 변환하고 나서, 그 결과를 Tx
로 변환하는 것에 상당합니다. 즉, Cx'(p) = Tx(Cx(p))입니다. 행렬 표기에서는, 이 변환 Cx 가 행렬 [this] 로 표현되어Tx
가 행렬 [Tx] 로 표현되는 경우, 이 메소드는 다음의 처리를 실시합니다.
[this] = [Tx] x [this]
Tx
- 이 AffineTransform
객체에
연결되는 AffineTransform
객체concatenate(java.awt.geom.AffineTransform)
public AffineTransform createInverse() throws NoninvertibleTransformException
AffineTransform
객체를 돌려줍니다. 이 변환 Tx 의 역변환 Tx'는, Tx 에 의해 변환된 좌표를 그 원의 좌표에 맵 해 되돌립니다. 즉, Tx'(Tx(p)) = p = Tx(Tx'(p))입니다.
이 변환이 모든 좌표를 점이나 선에 맵 하는 경우, 변환은 역사상을 가지지 않습니다. 이것은, 전송처의 점이나 선에 없는 좌표가 역사상을 가지지 않기 때문입니다. getDeterminant
메소드를 사용하면(자), 이 변환이 역사상을 가질지 어떨지를 판정할 수 있습니다. 이 변환이 역사상을 가지지 않는 경우,createInverse
메소드가 불려 가면(자), 예외가 throw 됩니다.
AffineTransform
객체
NoninvertibleTransformException
- 행렬을 반전할 수 없는 경우getDeterminant()
public void invert() throws NoninvertibleTransformException
이 변환이 모든 좌표를 점이나 선에 맵 하는 경우, 변환은 역사상을 가지지 않습니다. 이것은, 전송처의 점이나 선에 없는 좌표가 역사상을 가지지 않기 때문입니다. getDeterminant
메소드를 사용하면(자), 이 변환이 역사상을 가질지 어떨지를 판정할 수 있습니다. 이 변환이 역사상을 가지지 않는 경우,invert
메소드가 불려 가면(자), 예외가 throw 됩니다.
NoninvertibleTransformException
- 행렬을 반전할 수 없는 경우getDeterminant()
public Point2D transform(Point2D ptSrc, Point2D ptDst)
ptSrc
를 변환해, 그 결과를 ptDst
에 포함합니다. ptDst
가 null
의 경우, 새로운 Point2D
객체를 할당할 수 있고 나서, 변환의 결과가 이 객체에 포함됩니다. 어느 쪽의 경우도, 편의상, 변환 후의 점을 포함하고 있는 ptDst
가 돌려주어집니다. ptSrc
와 ptDst
가 같은 객체의 경우, 입력점은 변환 후의 점으로써 적절히 덧쓰기됩니다.
ptSrc
- 변환 대상의 지정된 Point2D
ptDst
- ptSrc
의 변환 결과를 포함하고 있다
지정된 Point2D
ptSrc
를 변환해, 결과를
ptDst
에 포함한 뒤의 ptDst
public void transform(Point2D [] ptSrc, int srcOff, Point2D [] ptDst, int dstOff, int numPts)
ptDst
배열의 요소중 한쪽이 null
이면, 새로운 Point2D
객체를 할당할 수 있어 변환의 결과가 포함되기 전에 그 요소에 포함됩니다.
다만, 이 메소드는, 전송원배열에 놓여져 계산의 전송원으로서 사용되는 Point2D
객체에 결과를 포함하는 것에 의해 일으켜지는 문제를 피하기 위한 예방 조치를 취하고 있지 않습니다. 이 메소드는, 지정된 Point2D
객체가 같은 1 개의 점의 변환 오퍼레이션의 전송원과 전송처의 양쪽 모두인 경우, 오퍼랜드 위에 결과가 포함되지 않게, 결과를 계산의 종료후까지 포함하지 않는 것을 보증합니다. 그러나, 전송처 Point2D
객체가 다른 오퍼레이션의 전송원배열에 놓여져 전송원 Point2D
객체가 되는 경우, 그 점의 원의 좌표는 변환 가능하게 되기 전에 덧쓰기됩니다.
- 파라미터:
ptSrc
- 전송원의 포인트 객체가 포함되고 있는 배열ptDst
- 변환 포인트 객체가 반환된다
배열srcOff
- 전송원배열내의
변환되는 최초의 포인트 객체에의 오프셋(offset)dstOff
- 변환된 최초의 포인트 객체가 포함된다
전송처 배열내의 위치에의 오프셋(offset)numPts
- 변환되는 포인트 객체의 수- 도입된 버젼:
- 1.2
public void transform(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
[x0, y0, x1, y1, ..., xn, yn]
라고 하는 순서로 포함됩니다.
srcPts
- 전송원의 점좌표가 돌려주어지고 있는 배열.
각 점은 x, y 좌표의 페어로서 포함되는dstPts
- 변환된 점좌표가 반환된다
배열. 각 점은 x, y 좌표의 페어로서
포함되는srcOff
- 전송원배열내의
변환되는 최초의 점에의 오프셋(offset)dstOff
- 변환된 최초의 점이 포함된다
전송처 배열내의 위치에의 오프셋(offset)numPts
- 변환되는 점의 수public void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
[x0, y0, x1, y1, ..., xn, yn]
라고 하는 순서로 포함됩니다.
srcPts
- 전송원의 점좌표가 돌려주어지고 있는 배열.
각 점은 x, y 좌표의 페어로서 포함되는dstPts
- 변환된 점좌표가 반환된다
배열. 각 점은 x, y 좌표의 페어로서
포함된다. srcOff
- 전송원배열내의
변환되는 최초의 점에의 오프셋(offset)dstOff
- 변환된 최초의 점이 포함된다
전송처 배열내의 위치에의 오프셋(offset)numPts
- 변환되는 포인트 객체의 수public void transform(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
[x0, y0, x1, y1, ..., xn, yn]
라고 하는 순서로 포함됩니다.
srcPts
- 전송원의 점좌표가 돌려주어지고 있는 배열.
각 점은 x, y 좌표의 페어로서 포함되는dstPts
- 변환된 점좌표가 반환된다
배열. 각 점은 x, y 좌표의 페어로서
포함되는srcOff
- 전송원배열내의
변환되는 최초의 점에의 오프셋(offset)dstOff
- 변환된 최초의 점이 포함된다
전송처 배열내의 위치에의 오프셋(offset)numPts
- 변환되는 점의 수public void transform(double[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
[x0, y0, x1, y1, ..., xn, yn]
라고 하는 순서로 포함됩니다.
srcPts
- 전송원의 점좌표가 돌려주어지고 있는 배열.
각 점은 x, y 좌표의 페어로서 포함되는dstPts
- 변환된 점좌표가 반환된다
배열. 각 점은 x, y 좌표의 페어로서
포함된다. srcOff
- 전송원배열내의
변환되는 최초의 점에의 오프셋(offset)dstOff
- 변환된 최초의 점이 포함된다
전송처 배열내의 위치에의 오프셋(offset)numPts
- 변환되는 포인트 객체의 수public Point2D inverseTransform(Point2D ptSrc, Point2D ptDst) throws NoninvertibleTransformException
ptSrc
를 역변환해, 그 결과를 ptDst
에 포함합니다. ptDst
가 null
의 경우, 새로운 Point2D
객체를 할당할 수 있고 나서, 변환의 결과가 이 객체에 포함됩니다. 어느 쪽의 경우도, 편의상, 변환 후의 점을 포함하고 있는 ptDst
가 돌려주어집니다. ptSrc
와 ptDst
가 같은 객체의 경우, 입력점은 변환 후의 점으로써 적절히 덧쓰기됩니다.
ptSrc
- 역변환되는 점ptDst
- 결과적으로 생성되는 변환 후의 점
ptDst
NoninvertibleTransformException
- 행렬을 반전할 수 없다
경우public void inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) throws NoninvertibleTransformException
[x0, y0, x1, y1, ..., xn, yn]
라고 하는 순서로 포함됩니다.
srcPts
- 전송원의 점좌표가 돌려주어지고 있는 배열.
각 점은 x, y 좌표의 페어로서 포함되는dstPts
- 변환된 점좌표가 반환된다
배열. 각 점은 x, y 좌표의 페어로서
포함된다. srcOff
- 전송원배열내의
변환되는 최초의 점에의 오프셋(offset)dstOff
- 변환된 최초의 점이 포함된다
전송처 배열내의 위치에의 오프셋(offset)numPts
- 변환되는 포인트 객체의 수
NoninvertibleTransformException
- 행렬을 반전할 수 없다
경우public Point2D deltaTransform(Point2D ptSrc, Point2D ptDst)
ptSrc
에 의해 지정되는 상대적인 거리 벡터를 변환해, 그 결과를 ptDst
에 포함합니다. 상대적 거리 벡터는, 아핀 변환 행렬의 평행이동 컴퍼넌트를 적용하는 일 없이, 다음의 식을 사용해 변환됩니다.
[ x' ] [ m00 m01 (m02) ] [ x ] [ m00x + m01y ] [ y' ] = [ m10 m11 (m12) ] [ y ] = [ m10x + m11y ] [ (1) ] [ (0) (0) ( 1 ) ] [ (1) ] [ (1) ]
ptDst
가 null
의 경우, 새로운 Point2D
객체를 할당할 수 있고 나서, 변환의 결과가 이 객체에 포함됩니다. 어느 쪽의 경우도, 편의상, 변환 후의 점을 포함하고 있는 ptDst
가 돌려주어집니다. ptSrc
와 ptDst
가 같은 객체의 경우, 입력점은 변환 후의 점으로써 적절히 덧쓰기됩니다.
ptSrc
- 델타 변환되는 거리 벡터ptDst
- 결과적으로 변환된 거리 벡터
ptDst
public void deltaTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
[ x' ] [ m00 m01 (m02) ] [ x ] [ m00x + m01y ] [ y' ] = [ m10 m11 (m12) ] [ y ] = [ m10x + m11y ] [ (1) ] [ (0) (0) ( 1 ) ] [ (1) ] [ (1) ]2 개의 좌표 배열 섹션은 완전하게 같은가, 결과의 유효성에 영향을 주지 않고 같은 배열의 섹션을 오버랩 한 것입니다. 이 메소드는, 전송원의 좌표가 변환 가능하게 되기 전에, 지금까지의 오퍼레이션에 의해 덧쓰기되지 않는 것을 보증합니다. 좌표는, 지정된 오프셋(offset)로부터 시작되는 배열에
[x0, y0, x1, y1, ..., xn, yn]
라고 하는 순서로 포함됩니다.
srcPts
- 전송원의 거리 벡터가 포함되고 있는 배열.
각 벡터는 상대 x, y 좌표의 페어로서 포함되는dstPts
- 변환 끝난 거리 벡터가 반환된다
배열. 각 벡터는 상대 x, y 좌표의 페어로서
포함된다. srcOff
- 전송원배열내의
변환되는 최초의 벡터에의 오프셋(offset)dstOff
- 변환된 최초의 벡터가 포함된다
전송처 배열내의 위치에의 오프셋(offset)numPts
- 변환되는 벡터 좌표 페어의
수public Shape createTransformedShape(Shape pSrc)
Shape
를 이 변환에 의해 변환해, 그 Shape
의 기하학적 도형에 의해 정의되는 새로운 Shape
객체를 돌려줍니다.
pSrc
- 이 변환으로 변환되는 지정되었다
Shape
객체
Shape
의 기하학적 도형을 정의한다
새로운 Shape
객체,pSrc
가 null 의 경우는 nullpublic String toString()
Object
의 값을 나타내는 String
를 돌려줍니다.
Object
내의 toString
Object
의 값을 나타낸다
String
public boolean isIdentity()
AffineTransform
이 항등변환인 경우에 true
를 돌려줍니다.
AffineTransform
가 항등변환인 경우는 true
,
그렇지 않은 경우는 false
public Object clone()
AffineTransform
객체의 카피를 돌려줍니다.
Object
내의 clone
AffineTransform
객체의 카피이다
Object
Cloneable
public int hashCode()
Object
내의 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
AffineTransform
이, 지정된 인수와 같은 아핀 좌표변화를 표현하는 경우에 true
를 돌려줍니다.
Object
내의 equals
obj
- 이 AffineTransform
와 같은가 어떤가가 비교된다
Object
obj
가 이 AffineTransform
객체와 동일한 경우는
true
, 그렇지 않은 경우는 false
Object.hashCode()
,
Hashtable
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.