org.jscience.mathematics.geometry
Class PureBezierCurve2D

java.lang.Object
  extended by org.jscience.mathematics.geometry.GeometryElement
      extended by org.jscience.mathematics.geometry.AbstractParametricCurve
          extended by org.jscience.mathematics.geometry.ParametricCurve2D
              extended by org.jscience.mathematics.geometry.BoundedCurve2D
                  extended by org.jscience.mathematics.geometry.FreeformCurveWithControlPoints2D
                      extended by org.jscience.mathematics.geometry.PureBezierCurve2D
All Implemented Interfaces:
java.io.Serializable

public class PureBezierCurve2D
extends FreeformCurveWithControlPoints2D

�Q���� : ��L�? (��?���) �x�W�G��?��їL�?�x�W�G��?��\���N���X

���̃N���X�ɓWL�ȑ�?���\���t�B?[���h�͓BɂȂ�?B ?���_��Ȃǂ�ێ?����t�B?[���h�ɂ‚��Ă�?A �X?[�p?[�N���X�̉�?� ��Q?�?B

�x�W�G��?�̃p���??[�^��`��� [0, 1] �ƂȂ�?B

t ��p���??[�^�Ƃ���x�W�G��?� P(t) �̃p���?�g���b�N�\����?A�ȉ��̒ʂ�?B

        n = ?���_��?� - 1
        bi = controlPoints[i]
        wi = weights[i]
 
�Ƃ���?A��L�?�x�W�G��?��
        P(t) =  (bi * Bn,i(t)) �̑?�a            (i = 0, ..., n)
 
�L�?�x�W�G��?��
                (wi * bi * Bn,i(t)) �̑?�a
        P(t) =  --------------------------      (i = 0, ..., n)
                (wi * Bn,i(t)) �̑?�a
 
������ Bn,i(t) �̓o?[���X�^�C������?��ł���?B

See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.jscience.mathematics.geometry.FreeformCurveWithControlPoints2D
controlPoints, weights
 
Constructor Summary
PureBezierCurve2D(Point2D[] controlPoints)
          ?
PureBezierCurve2D(Point2D[] controlPoints, double[] weights)
          ?
PureBezierCurve2D(Point2D[] controlPoints, double[] weights, boolean doCheck)
          ?
 
Method Summary
 Point2D blossoming(double[] parameters)
          ���̋�?
 CommonNormal2D[] commonNormal(ParametricCurve2D mate)
          ���̋�?
 CommonTangent2D[] commonTangent(ParametricCurve2D mate)
          ���̋�?
 Point2D coordinates(double param)
          ���̋�?
 CurveCurvature2D curvature(double param)
          ���̋�?
 int degree()
          ���̋�?
 PureBezierCurve2D[] divide(double param)
          ���̃x�W�G��?
protected  ParametricCurve2D doTransformBy(boolean reverseTransform, CartesianTransformationOperator2D transformationOperator, java.util.Hashtable transformedGeometries)
          ���̋�?
 PureBezierCurve2D elevateOneDegree()
          ���̋�?
 Point2D endPoint()
          ���̗L� �?
 CurveDerivative2D evaluation(double param)
          ���̋�?
 PointOnCurve2D[] inflexion()
          ���̋�?
 CurveCurveInterference2D[] interfere(BoundedCurve2D mate)
          ���̗L� �?
 IntersectionPoint2D[] intersect(ParametricCurve2D mate)
          ���̋�?
 double length(ParameterSection pint)
          �^����ꂽ�p���??
 BsplineCurve2D offsetByBsplineCurve(ParameterSection pint, double magni, int side, ToleranceForDistance tol)
          ���̋�?
protected  void output(java.io.PrintWriter writer, int indent)
          ?
 DoublePolynomial[] polynomial(boolean isPoly)
          ���̋�?
 PolynomialCurve2D polynomialCurve(boolean isPoly)
          ���̋�?
 PointOnCurve2D[] projectFrom(Point2D mate)
          �^����ꂽ�_���炱�̋�?
 PointOnCurve2D[] singular()
          ���̋�?
 Point2D startPoint()
          ���̗L� �?
 Vector2D tangentVector(double param)
          ���̋�?
 BsplineCurve2D toBsplineCurve()
          ���̗L� �?
 BsplineCurve2D toBsplineCurve(ParameterSection pint)
          ���̋�?
 Polyline2D toPolyline(ParameterSection section, ToleranceForDistance tolerance)
          ���̋�?
 PureBezierCurve2D truncate(ParameterSection section)
          ���̃x�W�G��?
 
Methods inherited from class org.jscience.mathematics.geometry.FreeformCurveWithControlPoints2D
allocateDoubleArray, controlPointAt, controlPoints, convRational0Deriv, convRational1Deriv, convRational2Deriv, isFreeform, isPolynomial, isRational, makeUniformWeights, nControlPoints, setCoordinatesToDoubleArray, toDoubleArray, weightAt, weights
 
Methods inherited from class org.jscience.mathematics.geometry.BoundedCurve2D
fillet, length, offsetByBoundedCurve, offsetByBsplineCurve, toPolyline
 
Methods inherited from class org.jscience.mathematics.geometry.ParametricCurve2D
checkProjection, dimension, fillet, hasPolyline, identicalParameter, is2D, isComposedOfOnlyPolylines, nearestProjectFrom, nearestProjectWithDistanceFrom, offsetByBoundedCurve, pointToParameter, reverseTransformBy, transformBy, transformBy
 
Methods inherited from class org.jscience.mathematics.geometry.AbstractParametricCurve
checkValidity, checkValidity, isClosed, isCurve, isFinite, isInfinite, isNonPeriodic, isOpen, isParametric, isPeriodic, isValid, parameterDomain
 
Methods inherited from class org.jscience.mathematics.geometry.GeometryElement
getClassName, getToleranceForAngle, getToleranceForAngleAsObject, getToleranceForDistance, getToleranceForDistance2, getToleranceForDistanceAsObject, getToleranceForParameter, getToleranceForParameterAsObject, getToleranceForRealNumber, getToleranceForRealNumberAsObject, is1D, is3D, isPlacement, isPoint, isSurface, isTransformationOperator, isVector, makeIndent, output
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PureBezierCurve2D

public PureBezierCurve2D(Point2D[] controlPoints)
?���_���^���đ�?�����?�Ƃ��ăI�u�W�F�N�g��?\�z����?B

���̃R���X�g���N�^��?A super(controlPoints) ��Ă�?o���Ă��邾���ł���?B

Parameters:
controlPoints - ?���_�̔z��

PureBezierCurve2D

public PureBezierCurve2D(Point2D[] controlPoints,
                         double[] weights)
?���_���?d�ݗ��^���ėL�?��?�Ƃ��ăI�u�W�F�N�g��?\�z����?B

���̃R���X�g���N�^��?A super(controlPoints, weights) ��Ă�?o���Ă��邾���ł���?B

Parameters:
controlPoints - ?���_�̔z��
weights - ?d�݂̔z��

PureBezierCurve2D

public PureBezierCurve2D(Point2D[] controlPoints,
                         double[] weights,
                         boolean doCheck)
?���_���?d�ݗ��^���� ��?�����?� (���邢�͗L�?��?�) �Ƃ��ăI�u�W�F�N�g��?\�z����?B

���̃R���X�g���N�^��?A super(controlPoints, weights, doCheck) ��Ă�?o���Ă��邾���ł���?B

Parameters:
controlPoints - ?���_�̔z��?B
weights - ?d�݂̔z��
doCheck - ��?��̃`�F�b�N�ⷂ邩�ǂ���
Method Detail

degree

public int degree()
���̋�?�̎�?���Ԃ�?B

Returns:
��?�

polynomial

public DoublePolynomial[] polynomial(boolean isPoly)
���̋�?�̑�?����\����Ԃ�?B

���ʂƂ��ē�����z�� R �̗v�f?���?A ���̋�?��L�?�ł���� 2?A �L�?�ł���� 3 �ł���?B

��L�?��?��?�?�?A R[0] �� X ?���?A R[1] �� Y ?��� �̑�?����\����\��?B

�L�?��?��?�?�?A R[0] �� WX ?���?A R[1] �� WY ?��� R[2] �� W ?��� �̑�?����\����\��?B

Parameters:
isPoly - ��L�?�ł��邩�ǂ���
Returns:
��?����̔z��
See Also:
polynomialCurve(boolean)

polynomialCurve

public PolynomialCurve2D polynomialCurve(boolean isPoly)
���̋�?��?Č����鑽?�����?��Ԃ�?B

Parameters:
isPoly - ��L�?�ł��邩�ǂ���
Returns:
��?�����?�
See Also:
polynomial(boolean)

length

public double length(ParameterSection pint)
�^����ꂽ�p���??[�^��Ԃɂ����邱�̋�?�̎ ��?�ł̒��� (���̂�) ��Ԃ�?B

pint �̑?���l�͕��ł©�܂�Ȃ�?B

�^����ꂽ�p���??[�^��Ԃ����̋�?�̒�`���O��Ă���?�?��ɂ� ParameterOutOfRange �̗�O��?�����?B

Specified by:
length in class AbstractParametricCurve
Parameters:
pint - ��?�̒�����?�߂�p���??[�^���
Returns:
�w�肳�ꂽ�p���??[�^��Ԃɂ������?�̒���
See Also:
ParameterOutOfRange

coordinates

public Point2D coordinates(double param)
���̋�?��?A�^����ꂽ�p���??[�^�l�ł�?W�l��Ԃ�?B

�^����ꂽ�p���??[�^�l����`���O��Ă���?�?��ɂ�?A ParameterOutOfRange �̗�O��?�����?B

Specified by:
coordinates in class ParametricCurve2D
Parameters:
param - �p���??[�^�l
Returns:
?W�l
See Also:
ParameterOutOfRange

tangentVector

public Vector2D tangentVector(double param)
���̋�?��?A�^����ꂽ�p���??[�^�l�ł�?ڃx�N�g����Ԃ�?B

�^����ꂽ�p���??[�^�l����`���O��Ă���?�?��ɂ�?A ParameterOutOfRange �̗�O��?�����?B

Specified by:
tangentVector in class ParametricCurve2D
Parameters:
param - �p���??[�^�l
Returns:
?ڃx�N�g��
See Also:
ParameterOutOfRange

curvature

public CurveCurvature2D curvature(double param)
���̋�?��?A�^����ꂽ�p���??[�^�l�ł̋ȗ���Ԃ�?B

�^����ꂽ�p���??[�^�l����`���O��Ă���?�?��ɂ�?A ParameterOutOfRange �̗�O��?�����?B

Specified by:
curvature in class ParametricCurve2D
Parameters:
param - �p���??[�^�l
Returns:
�ȗ�
See Also:
ParameterOutOfRange

evaluation

public CurveDerivative2D evaluation(double param)
���̋�?��?A�^����ꂽ�p���??[�^�l�ł̓���?���Ԃ�?B

�^����ꂽ�p���??[�^�l����`���O��Ă���?�?��ɂ�?A ParameterOutOfRange �̗�O��?�����?B

Specified by:
evaluation in class ParametricCurve2D
Parameters:
param - �p���??[�^�l
Returns:
����?�
See Also:
ParameterOutOfRange

blossoming

public Point2D blossoming(double[] parameters)
���̋�?��?A�^����ꂽ�p���??[�^��ɑ΂���u�?�b�T�~���O�̌��ʂ�Ԃ�?B

parameters �̗v�f?���?A���̋�?�̎�?��Ɉ�v���Ă���K�v������?B

�^����ꂽ�p���??[�^�l����`���O��Ă���?�?��ɂ�?A ParameterOutOfRange �̗�O��?�����?B

Parameters:
parameters - �p���??[�^�l�̔z��
Returns:
�u�?�b�T�~���O�̌��ʂł���?W�l
See Also:
ParameterOutOfRange

singular

public PointOnCurve2D[] singular()
                          throws IndefiniteSolutionException
���̋�?�̓Hٓ_��Ԃ�?B

�Hٓ_����?݂��Ȃ��Ƃ��͒��� 0 �̔z���Ԃ�?B

Specified by:
singular in class ParametricCurve2D
Returns:
�Hٓ_�̔z��
Throws:
IndefiniteSolutionException - ��?�S�̂�?k�ނ��Ă���

inflexion

public PointOnCurve2D[] inflexion()
                           throws IndefiniteSolutionException
���̋�?�̕ϋȓ_��Ԃ�?B

�ϋȓ_����?݂��Ȃ��Ƃ��͒��� 0 �̔z���Ԃ�?B

Specified by:
inflexion in class ParametricCurve2D
Returns:
�ϋȓ_�̔z��
Throws:
IndefiniteSolutionException - �⪕s��ł��� (���̋�?�͒�?�?�ł���)

projectFrom

public PointOnCurve2D[] projectFrom(Point2D mate)
�^����ꂽ�_���炱�̋�?�ւ̓��e�_��?�߂�?B

���e�_����?݂��Ȃ��Ƃ��͒��� 0 �̔z���Ԃ�?B

[�Ք?��?]
��?�?�̂���_ P(t) ����^����ꂽ�_�֌�x�N�g���� P(t) �ɂ�����?ڃx�N�g�� P'(t) �̓�?ς�\����?��� D(t) ��?�?���?A �����?��ӂƂ����?���� D(t) = 0 ��⢂Ă���?B

Specified by:
projectFrom in class ParametricCurve2D
Parameters:
point - ���e���̓_
Returns:
���e�_�̔z��

toBsplineCurve

public BsplineCurve2D toBsplineCurve()
���̗L� �?�S�̂쵖���?Č�����L�? Bspline ��?��Ԃ�?B

Overrides:
toBsplineCurve in class BoundedCurve2D
Returns:
���̋�?�S�̂�?Č�����L�? Bspline ��?�

toBsplineCurve

public BsplineCurve2D toBsplineCurve(ParameterSection pint)
���̋�?�̎w��̋�Ԃ쵖���?Č�����L�? Bspline ��?��Ԃ�?B

Specified by:
toBsplineCurve in class ParametricCurve2D
Parameters:
pint - �L�? Bspline ��?��?�����p���??[�^���
Returns:
���̋�?�̎w��̋�Ԃ�?Č�����L�? Bspline ��?�

intersect

public IntersectionPoint2D[] intersect(ParametricCurve2D mate)
���̋�?�Ƒ��̋�?�̌�_��?�߂�?B

��_����?݂��Ȃ��Ƃ��͒��� 0 �̔z���Ԃ�?B

Specified by:
intersect in class ParametricCurve2D
Parameters:
mate - ���̋�?�
Returns:
��_�̔z��

interfere

public CurveCurveInterference2D[] interfere(BoundedCurve2D mate)
���̗L� �?�Ƒ��̗L�E��?�̊�?‚�?�߂�?B

��?‚���?݂��Ȃ�?�?��ɂ͒��� 0 �̔z���Ԃ�?B

Specified by:
interfere in class BoundedCurve2D
Parameters:
mate - ���̋�?�
Returns:
���?�̊�?‚̔z��

offsetByBsplineCurve

public BsplineCurve2D offsetByBsplineCurve(ParameterSection pint,
                                           double magni,
                                           int side,
                                           ToleranceForDistance tol)
���̋�?�̎w��̋�Ԃ�I�t�Z�b�g������?��?A �^����ꂽ��?��ŋߎ����� Bspline ��?��?�߂�?B

Specified by:
offsetByBsplineCurve in class ParametricCurve2D
Parameters:
pint - �I�t�Z�b�g����p���??[�^���
magni - �I�t�Z�b�g��
side - �I�t�Z�b�g�̌� (WhichSide.LEFT/RIGHT)
tol - �����̋��e��?�
Returns:
���̋�?�̎w��̋�Ԃ̃I�t�Z�b�g��?��ߎ����� Bspline ��?�
See Also:
WhichSide

commonTangent

public CommonTangent2D[] commonTangent(ParametricCurve2D mate)
���̋�?�Ƒ��̋�?�Ƃ̋���?�?��?�߂�?B

����?�?�?݂��Ȃ�?�?��ɂ͒��� 0 �̔z���Ԃ�?B

�����_�ł͎�����Ă��Ȃ�����?A UnsupportedOperationException �̗�O��?�����?B

Specified by:
commonTangent in class ParametricCurve2D
Parameters:
mate - ���̋�?�
Returns:
����?�?�̔z��
Throws:
java.lang.UnsupportedOperationException - ���܂̂Ƃ���?A������Ȃ��@�\�ł���

commonNormal

public CommonNormal2D[] commonNormal(ParametricCurve2D mate)
���̋�?�Ƒ��̋�?�Ƃ̋��ʖ@?��?�߂�?B

���ʖ@?�?݂��Ȃ�?�?��ɂ͒��� 0 �̔z���Ԃ�?B

�����_�ł͎�����Ă��Ȃ�����?A UnsupportedOperationException �̗�O��?�����?B

Specified by:
commonNormal in class ParametricCurve2D
Parameters:
mate - ���̋�?�
Returns:
���ʖ@?�̔z��
Throws:
java.lang.UnsupportedOperationException - ���܂̂Ƃ���?A������Ȃ��@�\�ł���

divide

public PureBezierCurve2D[] divide(double param)
���̃x�W�G��?��?A�^����ꂽ�p���??[�^�l�œ�‚ɕ�������?B

param �̒l��?A���̃x�W�G��?�̒�`���O��Ă���?�?��ɂ� ParameterOutOfRange �̗�O��?�����?B

���ʂƂ��ē�����z��̗v�f?��� 2 ��?A ?�?��̗v�f��?u�n�_���番���_�܂ł�\���x�W�G��?�?v?A ��Ԗڂ̗v�f��?u�����_����?I�_�܂ł�\���x�W�G��?�?v �����?B

Parameters:
param - �p���??[�^�l
Returns:
������̃x�W�G��?��܂ޔz��
See Also:
ParameterOutOfRange

truncate

public PureBezierCurve2D truncate(ParameterSection section)
���̃x�W�G��?��?A�^����ꂽ�p���??[�^��Ԃ�?ؒf����?B

section �̑?���l������?�?��ɂ�?A?i?s���]�����x�W�G��?��Ԃ�?B

section �̒l��?A���̃x�W�G��?�̒�`���O��Ă���?�?��ɂ� ParameterOutOfRange �̗�O��?�����?B

Parameters:
section - ?ؒf���Ďc��������\���p���??[�^���
Returns:
?ؒf���Ďc����������\���x�W�G��?�
See Also:
ParameterOutOfRange

toPolyline

public Polyline2D toPolyline(ParameterSection section,
                             ToleranceForDistance tolerance)
���̋�?�̎w��̋�Ԃ�?A�^����ꂽ��?��Œ�?�ߎ�����|�����C����Ԃ�?B

���ʂƂ��ĕԂ����|�����C����?\?�����_�� ���̋�?��x?[�X�Ƃ��� PointOnCurve2D �� ���邱�Ƃ��҂ł���?B

section �̒l��?A���̃x�W�G��?�̒�`���O��Ă���?�?��ɂ� ParameterOutOfRange �̗�O��?�����?B

Specified by:
toPolyline in class ParametricCurve2D
Parameters:
section - ��?�ߎ�����p���??[�^���
tolerance - �����̋��e��?�
Returns:
���̋�?�̎w��̋�Ԃ�?�ߎ�����|�����C��
See Also:
ParameterOutOfRange

startPoint

public Point2D startPoint()
���̗L� �?�̊J�n�_��Ԃ�?B

Overrides:
startPoint in class BoundedCurve2D
Returns:
�J�n�_

endPoint

public Point2D endPoint()
���̗L� �?��?I���_��Ԃ�?B

Overrides:
endPoint in class BoundedCurve2D
Returns:
?I���_

elevateOneDegree

public PureBezierCurve2D elevateOneDegree()
���̋�?��?A�`?�⻂̂܂܂ɂ���?A��?�����?グ����?��Ԃ�?B

Returns:
����`?��?A��?������?オ�B���?�

doTransformBy

protected ParametricCurve2D doTransformBy(boolean reverseTransform,
                                          CartesianTransformationOperator2D transformationOperator,
                                          java.util.Hashtable transformedGeometries)
���̋�?��?A�^����ꂽ�􉽓I�ϊ����Z�q�ŕϊ�����?B

transformedGeometries ��?A �ϊ��O�̊􉽗v�f��L?[�Ƃ�?A �ϊ���̊􉽗v�f��l�Ƃ���n�b�V���e?[�u���ł���?B

this �� transformedGeometries ��ɃL?[�Ƃ��đ�?݂��Ȃ�?�?��ɂ�?A this �� transformationOperator �ŕϊ�������̂�Ԃ�?B ����?ۂɃ?�\�b�h�Ք�ł� this ��L?[?A �ϊ����ʂ�l�Ƃ��� transformedGeometries �ɒljB���?B

this �� transformedGeometries ��Ɋ�ɃL?[�Ƃ��đ�?݂���?�?��ɂ�?A ��?ۂ̕ϊ���?s�Ȃ킸?A���̃L?[�ɑΉ�����l��Ԃ�?B ����?��?��?ċA�I��?s�Ȃ���?B

transformedGeometries �� null �ł�?\��Ȃ�?B transformedGeometries �� null ��?�?��ɂ�?A ?�� this �� transformationOperator �ŕϊ�������̂�Ԃ�?B

Specified by:
doTransformBy in class ParametricCurve2D
Parameters:
reverseTransform - �t�ϊ�����̂ł���� true?A�����łȂ���� false
transformationOperator - �􉽓I�ϊ����Z�q
transformedGeometries - ��ɓ��l�̕ϊ���{�����􉽗v�f��܂ރn�b�V���e?[�u��
Returns:
�ϊ���̊􉽗v�f

output

protected void output(java.io.PrintWriter writer,
                      int indent)
?o�̓X�g��?[���Ɍ`?�?���?o�͂���?B

Specified by:
output in class GeometryElement
Parameters:
writer - PrintWriter
indent - �C���f���g��?[��
See Also:
GeometryElement