|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요 : 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.awt.geom.QuadCurve2D
public abstract class QuadCurve2D
QuadCurve2D
클래스는,(x, y)
좌표 공간의 2 차 파라메트릭 곡선 세그먼트(segment)를 정의합니다.
이 클래스는, 2D 의 2 차 곡선 세그먼트(segment)를 포함하는 모든 객체의 추상 슈퍼 클래스에 지나지 않습니다. 좌표의 실제의 기억역표현은 서브 클래스에 맡길 수 있습니다.
상자의 클래스의 개요 | |
---|---|
static class |
QuadCurve2D.Double
double 좌표로 지정한, 2 차 파라메트릭 곡선 세그먼트(segment)입니다. |
static class |
QuadCurve2D.Float
float 좌표로 지정한, 2 차 파라메트릭 곡선 세그먼트(segment)입니다. |
생성자 의 개요 | |
---|---|
protected |
QuadCurve2D ()
이것은, 인스턴스를 직접은 생성할 수 없는 abstract 클래스입니다. |
메소드의 개요 | |
---|---|
Object |
clone ()
이 객체와 같은 클래스에서, 같은 내용의 새로운 객체를 작성합니다. |
boolean |
contains (double x,
double y)
지정된 좌표가 Shape 의 경계내에 있을지 어떨지를 판정합니다. |
boolean |
contains (double x,
double y,
double w,
double h)
Shape 의 내부 영역이, 지정된 구형 영역을 완전하게 포함 할지 어떨지를 판정합니다. |
boolean |
contains (Point2D p)
지정된 Point2D 가 Shape 의 경계내에 있을지 어떨지를 판정합니다. |
boolean |
contains (Rectangle2D r)
Shape 의 내부가, 지정된 Rectangle2D 를 완전하게 내포 할지 어떨지를 판정합니다. |
Rectangle |
getBounds ()
Shape 를 완전하게 둘러싸는 정수형 Rectangle 를 돌려줍니다. |
abstract Point2D |
getCtrlPt ()
제어점을 돌려줍니다. |
abstract double |
getCtrlX ()
제어점의 X 좌표를 double 정밀도로 돌려줍니다. |
abstract double |
getCtrlY ()
제어점의 Y 좌표를 double 정밀도로 돌려줍니다. |
double |
getFlatness ()
이 QuadCurve2D 의 후랏트네스, 즉 종점을 묶는 선으로부터 제어점까지의 최대 거리를 돌려줍니다. |
static double |
getFlatness (double[] coords,
int offset)
지정된 배열의 지정된 인덱스에 포함된 제어점에 의해 지정되는 2 차 곡선의 후랏트네스, 즉 종점간을 접속하는 선으로부터 제어점까지의 최대 거리를 돌려줍니다. |
static double |
getFlatness (double x1,
double y1,
double ctrlx,
double ctrly,
double x2,
double y2)
지정된 제어점에 의해 지정되는 2 차 곡선의 후랏트네스, 즉 종점간을 접속하는 선으로부터 제어점까지의 최대 거리를 돌려줍니다. |
double |
getFlatnessSq ()
이 QuadCurve2D 의 후랏트네스의 2 승, 즉 종점을 묶는 선으로부터 제어점까지의 최대 거리의 2 승을 돌려줍니다. |
static double |
getFlatnessSq (double[] coords,
int offset)
지정된 배열의 지정된 인덱스에 포함된 제어점에 의해 지정되는 2 차 곡선의 후랏트네스의 2 승, 즉 종점간을 접속하는 선으로부터 제어점까지의 최대 거리의 2 승을 돌려줍니다. |
static double |
getFlatnessSq (double x1,
double y1,
double ctrlx,
double ctrly,
double x2,
double y2)
지정된 제어점에 의해 지정되는 2 차 곡선의 후랏트네스의 2 승, 즉 종점간을 접속하는 선으로부터 제어점까지의 최대 거리의 2 승을 돌려줍니다. |
abstract Point2D |
getP1 ()
시점을 돌려줍니다. |
abstract Point2D |
getP2 ()
종점을 돌려줍니다. |
PathIterator |
getPathIterator (AffineTransform at)
이 QuadCurve2D 의 형상의 경계를 정의하는 반복 객체를 돌려줍니다. |
PathIterator |
getPathIterator (AffineTransform at,
double flatness)
이 QuadCurve2D 의 평탄화 된 형상의 경계를 정의하는 반복 객체를 돌려줍니다. |
abstract double |
getX1 ()
시점의 X 좌표를 double 정밀도로 돌려줍니다. |
abstract double |
getX2 ()
종점의 X 좌표를 double 정밀도로 돌려줍니다. |
abstract double |
getY1 ()
시점의 Y 좌표를 double 정밀도로 돌려줍니다. |
abstract double |
getY2 ()
종점의 Y 좌표를 double 정밀도로 돌려줍니다. |
boolean |
intersects (double x,
double y,
double w,
double h)
Shape 의 내부 영역이, 지정된 구형 영역의 내부 영역과 교차할지 어떨지를 판정합니다. |
boolean |
intersects (Rectangle2D r)
Shape 의 내부가, 지정된 Rectangle2D 의 내부와 교차할지 어떨지를 판정합니다. |
void |
setCurve (double[] coords,
int offset)
이 QuadCurve2D 의 종점과 제어점의 위치를, 지정된 배열의 지정된 오프셋(offset)에 있는 double 형의 좌표로 설정합니다. |
abstract void |
setCurve (double x1,
double y1,
double ctrlx,
double ctrly,
double x2,
double y2)
이 곡선의 종점과 제어점의 위치를, 지정된 double 좌표로 설정합니다. |
void |
setCurve (Point2D [] pts,
int offset)
이 QuadCurve2D 의 종점과 제어점의 위치를, 지정된 배열의 지정된 오프셋(offset)에 있는 Point2D 객체의 좌표로 설정합니다. |
void |
setCurve (Point2D p1,
Point2D cp,
Point2D p2)
이 QuadCurve2D 의 종점과 제어점의 위치를, 지정된 Point2D 좌표로 설정합니다. |
void |
setCurve (QuadCurve2D c)
이 QuadCurve2D 의 종점과 제어점의 위치를, 지정된 QuadCurve2D 와 같게 설정합니다. |
static int |
solveQuadratic (double[] eqn)
계수가 eqn 배열에 있는 2 차 방정식의 해를 얻어, 비복소수해를 같은 배열에 되돌려, 결과적으로 해의 개수를 돌려줍니다. |
static int |
solveQuadratic (double[] eqn,
double[] res)
계수가 eqn 배열에 있는 2 차 방정식의 해를 얻어, 비복소수해를 res 배열에 두어, 결과적으로 해의 개수를 돌려줍니다. |
static void |
subdivide (double[] src,
int srcoff,
double[] left,
int leftoff,
double[] right,
int rightoff)
src 배열의 인덱스 srcoff 로부터 srcoff + 5 에 포함되고 있는 좌표로 지정되는 2 차 곡선을 분할해, 분할한 2 개의 곡선을 2 개의 배열의 대응하는 인덱스에 포함합니다. |
void |
subdivide (QuadCurve2D left,
QuadCurve2D right)
이 QuadCurve2D 를 분할해, 분할한 2 개의 곡선을 left 및 right 곡선 파라미터에 포함합니다. |
static void |
subdivide (QuadCurve2D src,
QuadCurve2D left,
QuadCurve2D right)
src 파라미터로 지정된 2 차 곡선을 분할해, 분할된 2 개의 곡선을 left 및 right 곡선 파라미터에 보존합니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
인터페이스 java.awt. Shape 로부터 상속된 메소드 |
---|
getBounds2D |
생성자 의 상세 |
---|
protected QuadCurve2D()
QuadCurve2D.Float
,
QuadCurve2D.Double
메소드의 상세 |
---|
public abstract double getX1()
double
정밀도로 돌려줍니다.
public abstract double getY1()
double
정밀도로 돌려줍니다.
public abstract Point2D getP1()
QuadCurve2D
의 시점을 나타낸다
Point2D
public abstract double getCtrlX()
double
정밀도로 돌려줍니다.
public abstract double getCtrlY()
double
정밀도로 돌려줍니다.
public abstract Point2D getCtrlPt()
Point2D
의 제어점을 나타낸다
Point2D
public abstract double getX2()
double
정밀도로 돌려줍니다.
public abstract double getY2()
double
정밀도로 돌려줍니다.
public abstract Point2D getP2()
Point2D
의 종점을 나타낸다
Point
객체public abstract void setCurve(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
double
좌표로 설정합니다.
x1
- 시점의 X 좌표y1
- 시점의 Y 좌표ctrlx
- 제어점의 X 좌표ctrly
- 제어점의 Y 좌표x2
- 종점의 X 좌표y2
- 종점의 Y 좌표public void setCurve(double[] coords, int offset)
QuadCurve2D
의 종점과 제어점의 위치를, 지정된 배열의 지정된 오프셋(offset)에 있는 double
형의 좌표로 설정합니다.
coords
- 좌표치를 포함하고 있는 배열offset
- 좌표치의 취득과 이 QuadCurve2D
에의
할당을 개시하는 위치를 나타낸다
배열의 인덱스public void setCurve(Point2D p1, Point2D cp, Point2D p2)
QuadCurve2D
의 종점과 제어점의 위치를, 지정된 Point2D
좌표로 설정합니다.
p1
- 시점cp
- 제어점p2
- 종점public void setCurve(Point2D [] pts, int offset)
QuadCurve2D
의 종점과 제어점의 위치를, 지정된 배열의 지정된 오프셋(offset)에 있는 Point2D
객체의 좌표로 설정합니다.
pts
- 좌표치를 정의하는 Point2D
를
포함하고 있는 배열offset
- 좌표치의 취득과 이 QuadCurve2D
에의
할당을 개시하는 위치를 나타낸다
pts
의 인덱스public void setCurve(QuadCurve2D c)
QuadCurve2D
의 종점과 제어점의 위치를, 지정된 QuadCurve2D
와 같게 설정합니다.
c
- 지정된 QuadCurve2D
public static double getFlatnessSq(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
x1
- 시점의 X 좌표y1
- 시점의 Y 좌표ctrlx
- 제어점의 X 좌표ctrly
- 제어점의 Y 좌표x2
- 종점의 X 좌표y2
- 종점의 Y 좌표
public static double getFlatness(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
x1
- 시점의 X 좌표y1
- 시점의 Y 좌표ctrlx
- 제어점의 X 좌표ctrly
- 제어점의 Y 좌표x2
- 종점의 X 좌표y2
- 종점의 Y 좌표
public static double getFlatnessSq(double[] coords, int offset)
coords
- 좌표치를 포함하는 배열offset
- 배열로부터 값을 취득하는 개시 위치를 나타낸다
coords
내의 인덱스
public static double getFlatness(double[] coords, int offset)
coords
- 좌표치를 포함하는 배열offset
- 좌표치를 취득하는 개시 위치를 나타낸다
coords
내의 인덱스
public double getFlatnessSq()
QuadCurve2D
의 후랏트네스의 2 승, 즉 종점을 묶는 선으로부터 제어점까지의 최대 거리의 2 승을 돌려줍니다.
QuadCurve2D
의 후랏트네스의
2 승public double getFlatness()
QuadCurve2D
의 후랏트네스, 즉 종점을 묶는 선으로부터 제어점까지의 최대 거리를 돌려줍니다.
QuadCurve2D
의 후랏트네스public void subdivide(QuadCurve2D left, QuadCurve2D right)
QuadCurve2D
를 분할해, 분할한 2 개의 곡선을 left
및 right
곡선 파라미터에 포함합니다. left
객체와 right
객체의 어느 쪽인지, 또는 양쪽 모두, 이 QuadCurve2D
와 같은가 null
가 됩니다.
left
- 분할된 곡선의 좌측 (최초의 반)을
포함하기 위한 QuadCurve2D
객체right
- 분할된 곡선의 우측 (나머지 반)을
포함하기 위한 QuadCurve2D
객체public static void subdivide(QuadCurve2D src, QuadCurve2D left, QuadCurve2D right)
src
파라미터로 지정된 2 차 곡선을 분할해, 분할된 2 개의 곡선을 left
및 right
곡선 파라미터에 보존합니다. left
객체 및 right
객체의 어느 쪽인지, 또는 양쪽 모두 src
객체와 같게 될까 null
가 됩니다.
src
- 분할되는 2 차 곡선left
- 분할된 곡선의 좌측 (최초의 반)을
포함하기 위한 QuadCurve2D
객체right
- 분할된 곡선의 우측 (나머지 반)을
포함하기 위한 QuadCurve2D
객체public static void subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff)
src
배열의 인덱스 srcoff
로부터 srcoff
+ 5 에 포함되고 있는 좌표로 지정되는 2 차 곡선을 분할해, 분할한 2 개의 곡선을 2 개의 배열의 대응하는 인덱스에 포함합니다. left
배열 및 right
배열의 어느 쪽인지, 또는 양쪽 모두 null
가 되는지, 또는 src
배열과 같은 배열 및 오프셋(offset)에의 참조가 됩니다. 분할된 최초의 곡선의 종점은 분할된 2 번째의 곡선의 시점과 같습니다. 그 때문에, 이 공통의 점에 여분의 기억역을 할당하는 것을 피하기 위해서(때문에),left
용과 right
용으로서 같은 배열을 건네주어,rightoff
가 leftoff
+ 4 로 동일한 오프셋(offset)를 사용할 수 있습니다.
src
- 전송원곡선의 좌표를 보관 유지하는 배열srcoff
- 6 개의 전송원좌표의 선두의
배열에의 오프셋(offset)left
- 분할된 곡선의 최초의 반의 좌표를
포함하기 위한 배열leftoff
- 6 개의 왼쪽 좌표의 선두의
배열에의 오프셋(offset)right
- 분할된 곡선의 나머지 반의 좌표를
포함하기 위한 배열rightoff
- 6 개의 오른쪽 좌표의 선두의
배열에의 오프셋(offset)public static int solveQuadratic(double[] eqn)
eqn
배열에 있는 2 차 방정식의 해를 얻어, 비복소수해를 같은 배열에 되돌려, 결과적으로 해의 개수를 돌려줍니다. 해를 얻은 2 차 방정식은 다음의 등식에서 나타내집니다.
eqn = {C, B, A}; ax^2 + bx + c = 0반환값의 것
-1
을 사용하면(자), 항상 0 이나 0 이 아닌 정수 방정식과 제로를 가지지 않는 방정식을 구별할 수 있습니다.
eqn
- 2 차 방정식의 계수를 포함하고 있는 배열
-1
public static int solveQuadratic(double[] eqn, double[] res)
eqn
배열에 있는 2 차 방정식의 해를 얻어, 비복소수해를 res
배열에 두어, 결과적으로 해의 개수를 돌려줍니다. 해를 얻은 2 차 방정식은 다음의 등식에서 나타내집니다.
eqn = {C, B, A}; ax^2 + bx + c = 0반환값의 것
-1
을 사용하면(자), 항상 0 이나 0 이 아닌 정수 방정식과 제로를 가지지 않는 방정식을 구별할 수 있습니다.
eqn
- 2 차 방정식의 해를 얻는데 사용하는 계수의,
지정된 배열res
- 2 차 방정식의 해로부터 얻을 수 있다
비복소수해를 포함하는 배열
-1
public boolean contains(double x, double y)
Shape
의 경계내에 있을지 어떨지를 판정합니다.
Shape
내의 contains
x
- 판정 대상의 지정된 X 좌표y
- 판정 대상의 지정된 Y 좌표
Shape
의
경계내에 있는 경우는 true
, 그렇지 않은 경우는
false
public boolean contains(Point2D p)
Point2D
가 Shape
의 경계내에 있을지 어떨지를 판정합니다.
Shape
내의 contains
p
- 판정 대상의, 지정된 Point2D
Point2D
가 Shape
의
경계내에 있는 경우는 true
,
그렇지 않은 경우는 false
public boolean intersects(double x, double y, double w, double h)
Shape
의 내부 영역이, 지정된 구형 영역의 내부 영역과 교차할지 어떨지를 판정합니다. Shape
의 내부 영역과 지정된 구형 영역의 양쪽 모두에 포함되는 점이 있는 경우, 구형 영역은 Shape
와 교차하고 있다고 보여집니다.
Shape.intersects()
메소드를 사용하면(자), 다음과 같은 경우에 Shape
구현은 true
를 돌려주는 일이 있습니다.
Shape
가 서로 겹치고 있을 가능성이 꽤 높지만,
Shape
에 따라서는, 구형 영역이 Shape
와 교차하지 않는 경우에서도 이 메소드가 true
를 돌려주는 일이 있습니다. Area
클래스는, 대부분의 Shape
객체의 기하학적인 공통 부분의 것보다 정밀한 계산을 실시하기 (위해)때문에, 보다 정확한 결과가 필요한 경우에 사용할 수 있습니다.
Shape
내의 intersects
x
- 지정된 구형 영역의
좌상구석의 X 좌표y
- 지정된 구형 영역의
좌상구석의 Y 좌표w
- 지정된 구형 영역의 폭h
- 지정된 구형 영역의 높이
Shape
의 내부 영역과 구형 영역의 내부 영역이 교차하는 경우,
또는 교차할 가능성이 높지만, 부하가 너무 커
공통 부분의 계산을 실시할 수 없는 경우도 true
,
그렇지 않은 경우는 false
Area
public boolean intersects(Rectangle2D r)
Shape
의 내부가, 지정된 Rectangle2D
의 내부와 교차할지 어떨지를 판정합니다. Shape.intersects()
메소드를 사용하면(자), 다음과 같은 경우에 Shape
구현은 true
를 돌려주는 일이 있습니다.
Rectangle2D
와 Shape
가 교차할 가능성이 높지만,
Shape
에 따라서는,Rectangle2D
가 Shape
와 교차하지 않는 경우에서도 이 메소드가 true
를 돌려주는 일이 있습니다. Area
클래스는, 대부분의 Shape
객체의 기하학적인 공통 부분의 것보다 정밀한 계산을 실시하기 (위해)때문에, 보다 정확한 결과가 필요한 경우에 사용할 수 있습니다.
Shape
내의 intersects
r
- 지정된 Rectangle2D
Shape
의 내부 영역과
지정된 Rectangle2D
의 내부 영역이 교차하는 경우,
또는 교차할 가능성이 높지만, 부하가 너무 커
공통 부분의 계산을 실시할 수 없는 경우도 true
,
그렇지 않은 경우는 false
Shape.intersects(double, double, double, double)
public boolean contains(double x, double y, double w, double h)
Shape
의 내부 영역이, 지정된 구형 영역을 완전하게 포함 할지 어떨지를 판정합니다. 구형 영역 전체가 Shape
에 포함 되고 있다고 보여지기 위해서(때문에)는, 구형 영역내에 있는 모든 좌표가 Shape
내에 위치하고 있을 필요가 있습니다.
Shape.contains()
메소드를 사용하면(자), 다음과 같은 경우에 Shape
구현은 false
를 돌려주는 일이 있습니다.
intersect
메소드가 true
를 돌려주어,
Shape
가 구형 영역을 완전하게 포함 할지 어떨지를 판별하는 계산의 부하가 꽤 크다
Shape
에 따라서는,Shape
가 구형 영역을 포함 하는 경우에서도 이 메소드가 false
를 돌려주는 일이 있습니다. Area
클래스는, 대부분의 Shape
객체의 것보다 정밀한 기하학적 계산을 실시하기 (위해)때문에, 보다 정확한 결과가 필요한 경우에 사용할 수 있습니다.
Shape
내의 contains
x
- 지정된 구형 영역의
좌상구석의 X 좌표y
- 지정된 구형 영역의
좌상구석의 Y 좌표w
- 지정된 구형 영역의 폭h
- 지정된 구형 영역의 높이
Shape
의 내부 영역이, 지정된 구형 영역을
완전하게 포함 하는 경우는 true
,
그렇지 않은 경우는 false
.
또,Shape
가 구형 영역을 포함 해,
intersects
메소드가 true
를 돌려주어,
부하가 너무 커 포함의 계산을 실시할 수 없는 경우도
false
Area
,
Shape.intersects(double, double, double, double)
public boolean contains(Rectangle2D r)
Shape
의 내부가, 지정된 Rectangle2D
를 완전하게 내포 할지 어떨지를 판정합니다. Shape.contains()
메소드를 사용하면(자), 다음과 같은 경우에 Shape
구현은 false
를 돌려주는 일이 있습니다.
intersect
메소드가 true
를 돌려주어,
Shape
가 Rectangle2D
를 완전하게 포함 할지 어떨지를 판단하는 계산의 부하가 크다
Shape
에 따라서는,Shape
가 Rectangle2D
를 포함 하는 경우에서도 이 메소드가 false
를 돌려주는 일이 있습니다. Area
클래스는, 대부분의 Shape
객체의 것보다 정밀한 기하학적 계산을 실시하기 (위해)때문에, 보다 정확한 결과가 필요한 경우에 사용할 수 있습니다.
Shape
내의 contains
r
- 지정된 Rectangle2D
Shape
의 내부 영역이,Rectangle2D
를
완전하게 포함 하는 경우는 true
,
그렇지 않은 경우는 false
.
또,Shape
가 Rectangle2D
를 포함 해,
intersects
메소드가 true
를 돌려주어,
부하가 너무 커 포함의 계산을 실시할 수 없는 경우도
false
Shape.contains(double, double, double, double)
public Rectangle getBounds()
Shape
를 완전하게 둘러싸는 정수형 Rectangle
를 돌려줍니다. 반환된 Rectangle
가 Shape
를 둘러싸는 최소의 바운딩 박스이다고는 할 수 없습니다. 나타난 Rectangle
내에 Shape
가 완전하게 수습된다고 할 뿐입니다. 또,Shape
가 정수형의 제한 범위를 넘는 경우, 반환된 Rectangle
는 Shape
를 완전하게 둘러싸지 못하는 것도 있습니다. 일반적으로은,getBounds2D
메소드가, 표현의 자유도가 높기 위해(때문에), 비교적 딱 한 바운딩 박스를 돌려줍니다.
Shape
내의 getBounds
Shape
를 완전하게 둘러싸는 정수형의
Rectangle
Shape.getBounds2D()
public PathIterator getPathIterator(AffineTransform at)
QuadCurve2D
의 형상의 경계를 정의하는 반복 객체를 돌려줍니다. 이 클래스의 반복자는, multi-thread에 대해서 안전하지는 않습니다. 즉 이 QuadCurve2D
클래스에서는, 이 QuadCurve2D
객체의 기하학적 도형을 변경하면(자), 이 기하학적 도형에 대해 벌써 진행중의 반복 처리에 영향을 미치는 경우가 있습니다.
Shape
내의 getPathIterator
at
- 형상의 경계에 적용되는 옵션의
AffineTransform
PathIterator
객체public PathIterator getPathIterator(AffineTransform at, double flatness)
QuadCurve2D
의 평탄화 된 형상의 경계를 정의하는 반복 객체를 돌려줍니다. 이 클래스의 반복자는, multi-thread에 대해서 안전하지는 않습니다. 즉 이 QuadCurve2D
클래스에서는, 이 QuadCurve2D
객체의 기하학적 도형을 변경하면(자), 이 기하학적 도형에 대해 벌써 진행중의 반복 처리에 영향을 미치는 경우가 있습니다.
Shape
내의 getPathIterator
at
- 형상의 경계에 적용된다
옵션의 AffineTransform
flatness
- 이 곡선이 종점을 묶는 직선에 의해
치환되지 않는 조건으로, 분할된 곡선의 제어점이
이 곡선의 종점간을 묶는 선으로부터
떨어질 수가 있는 최대 거리
PathIterator
객체public Object clone()
Object
내의 clone
OutOfMemoryError
- 충분한 메모리가 없는 경우Cloneable
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요 : 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.