メソッド
|
説明
|
start
|
public void start()
GeometricTestのshowDialogメソッドから呼ばれ、このオブジェクトをMouseListener, MouseMotionListeneとして、
ListenerPanelに設定する。
|
end
|
public void end()
GeometricTestActionのcloseDialogメソッドから呼ばれこのオブジェクトを、
ListenerPanelから削除する。
|
setMode
|
public void setMode(int mode)
GeometricTestAction.actionPerformedメソッドから呼ばれる。
動作モードをチェックしtrueならば、このクラスの drawIntersectionPts、
drawNormalLinesBetweenShapes、
drawShortestLinesBetweenShapesを呼んで計算結果を表示する。
|
mousePressed
|
public void mousePressed(MouseEvent e)
動作モードをチェックしtrueならば、このクラスの drawIntersectionPts、
drawNormalLinesBetweenShapes、
drawShortestLinesBetweenShapesを呼んで計算結果を表示する。
|
mouseDragged
|
public void mouseDragged(MouseEvent e)
同上
|
mouseReleased
|
public void mouseReleased(MouseEvent e)
同上
|
mouseMoved
|
public void mouseMoved(MouseEvent e)
動作モードをチェックしtrueならば、このクラスの drawNormalLines、
drawShortestLine、
drawProjectionLinesを呼んで計算結果を表示する。
|
mouseClicked
|
public void mouseClicked(MouseEvent e)
なにもしない。
|
mouseEntered
|
public void mouseEntered(MouseEvent e)
なにもしない。
|
mouseExited
|
public void mouseExited(MouseEvent e)
なにもしない。
|
drawNormalLines
|
protected void drawNormalLines(Point2D point)
引数:
point - マウスカーソルの位置
処理:
∙ ContainerManager.getAllSigleShapeContainers
で全ての選択図形を取得。
∙ 現在のマウス位置(point)から、取得した図形への垂線計算をCurve2DUtil.getNormalLinesで実行。
∙ DrawShapeUtil.drawTempShapeで図形上の垂線位置にマークを表示し、
垂線位置を表示する。
=>図(a)
|
drawShortestLine
|
protected void drawShortestLine(Point2D point)
引数:
point - マウスカーソルの位置
処理:
∙ ContainerManager.getAllSigleShapeContainers
で選択されている全ての図形を取得。
∙ 現在のマウス位置(point)から、取得した図形への最短線計算を
Curve2DUtil.getShortestLineで実行。
∙ DrawShapeUtil.drawTempShapeで図形上の最短線位置にマークを表示し、
最短線を表示する。
=>図(b)
|
drawProjectionLines
|
protected void drawProjectionLines(Point2D point)
引数:
point - マウスカーソルの位置
処理:
∙ ContainerManager.getAllSigleShapeContainers
で選択されている全ての図形を取得。
∙ 現在のマウス位置(point)から、8方向45°ピッチで選択図形への射影線を
Curve2DUtil.getProjectionLinesでk計算。
∙ DrawShapeUtil.drawTempShapeで図形上の射影点位置にマークを表示し、
射影線を表示する。
=>図(c)
|
drawIntersectionPts
|
protected void drawIntersectionPts()
∙ 選択されている図形(複数可)とその他の図形の交点計算を
Curve2DUtil.getIntersectionPtsで実行。
∙ DrawShapeUtil.drawTempShapeで交点にマークを表示する。
=>図(d)
|
drawNormalLinesBetweenShapes
|
protected void drawNormalLinesBetweenShapes()
∙ このクラスのgetClosestShapesで選択図形とそれに最も近い図形(ターゲット図形)を取得。
∙ 選択図形(selectedShape)とターゲット図形(targetShape)のそれぞれについて、その単一図形要素を取得。
図形がグループ図形であることも考慮し、
ShapeContainer.getGroupedSingleShapeContainersメソッド
で選択図形とターゲット図形の単一要素図形を配列で取得する。
∙ 共通垂線の計算
このクラスのgetNormalLinesBetweenClosedCoupleメソッド
で選択図形の単一要素図形の配列と、ターゲット図形の単一要素図形の配列の組み合わせに対し、共通垂線計算を行い、
結果をCurve2DUtil.NormalsInfoの配列で返す。
∙ 結果の表示
返されたCurve2DUtil.NormalsInfo
を元に計算結果の表示図形を作成し、DrawShapeUtil.drawTempShape
で共通垂線と、交点があればそれマークで表示する。
=>図(e)
|
getClosestShapes
|
protected ShapeContainer[] getClosestShapes()
戻り値:
ShapeContainer[0] に選択されている図形を、
ShapeContainer[1] には選択図形に最も近い図形(ターゲット図形)を返す。
返す図形はグループ図形でも良い。
処理:
∙ 選択図形の取得。
選択されている図形は
ContainerManager.getSelectedContainers
メソッドで取得。
∙ ターゲット図形の取得
ContainerManager.getContainersメソッドで全ての図形を取得し、
選択図形とその他の図形を矩形で囲み、矩形間の距離をCurve2DUtil.distanceBetweenBoxesメソッドで計算し、
最も近い図形をターゲット図形とする。
|
getNormalLinesBetweenClosedCouple
|
protected Vector getNormalLinesBetweenClosedCouple(ShapeContainer selectedShape, ShapeContainer targetShape)
引数:
selectedShape - 選択図形
targetShape - 選択図形に最も近い図形(ターゲット図形)
処理:
∙ 選択図形(selectedShape)とターゲット図形(targetShape)のそれぞれについて、
その単一図形要素を取得。
図形がグループ図形であることも考慮し、ShapeContainer.getGroupedSingleShapeContainersで
選択図形とターゲット図形の単一要素図形を配列で取得する。
∙ 選択図形とターゲット図形の要素図形の組み合わせに対し、共通垂線を計算する。
共通垂線はCurve2DUtil.getNormalLinesBetweenShapesで計算し、
出力データ(Curve2DUtil.NormalsInfo)をVectorオブジェクト(Vector normalLines)に格納する。
∙ normalLinesを戻り値にセットしてリターン。
|
drawShortestLinesBetweenShapes
|
protected void drawShortestLinesBetweenShapes()
処理:
∙ このクラスのgetClosestShapesで選択図形と
それに最も近い図形(ターゲット図形)を取得。
∙ 選択図形(selectedShape)とターゲット図形(targetShape)のそれぞれについて、
その単一図形要素を取得。
図形がグループ図形であることも考慮し、
ShapeContainer.getGroupedSingleShapeContainersで
選択図形とターゲット図形の単一要素図形を配列で取得する。
∙ 最短線の計算
このクラスのgetShortestLinesBetweenClosedCouple
メソッドで選択図形の単一要素図形の配列と、ターゲット図形の単一要素図形の配列の組み合わせに対し、最短線計算を行い、
結果をCurve2DUtil.NormalsInfoの配列で返す。
∙結果の表示
返されたCurve2DUtil.NormalsInfoを元に計算結果の表示図形を作成し、
DrawShapeUtil.drawTempShapeで最短線と、
交点があればそれマークで表示する。
=>図(f)
|
getShortestLinesBetweenClosedCouple
|
protected Vector getShortestLinesBetweenClosedCouple(ShapeContainer selectedShape,
ShapeContainer targetShape)
引数:
selectedShape - 選択図形
targetShape - 選択図形に最も近い図形(ターゲット図形)
処理:
∙ 選択図形(selectedShape)とターゲット図形(targetShape)のそれぞれについて、
その単一図形要素を取得。
図形がグループ図形であることも考慮し、
ShapeContainer.getGroupedSingleShapeContainers
で選択図形とターゲット図形の単一要素図形を配列で取得する。
∙ 選択図形とターゲット図形の要素図形の組み合わせに対し、最短線を計算する。
最短線はCurve2DUtil.getShortestLineBetweenShapes
で計算し、出力データ(Curve2DUtil.NormalsInfo)をVectorオブジェクト(Vector shortestLines)に格納する。
∙ shortestLinesを戻り値にセットしてリターン。
|