クラス CSpider2


  • public class CSpider2
    extends java.lang.Object
    2021.07.11 spider2アルゴリズムJAVA版
    コアと拡張後の直方体を非相似に対応するために、
    parametersファイル コアのx-方向の比率(xCoreRatio)を追加
    xCoreratioが書かれているとcuboidを書き直す<==よくわからないので使用しない。
    2021.07.04
    2.vs.1対応
    parameters file
    Cuboid x y z は最小値を設定する。
    例 x: 0 70
    y: -40 40
    z: -45 45
    の場合 cuboid =35 ,35 ,35
    2021.05.24
    pointsファイルを呼び込んで、コアとの距離を急に離れないように
    調整して、pointsファイルに書き込む。

    2021.04.16
    蜘蛛の巣アルゴリズム(岩上さん)のJAVA版を実装
    doExpansion
    作成者:
    ohno
    • コンストラクタの概要

      コンストラクタ 
      コンストラクタ 説明
      CSpider2​(double delta_x, double delta_y, double delta_z)
      CellPaire から doExpansionを呼ぶ時に使用されるコンストラクタ
      CSpider2​(java.lang.String infpath, java.lang.String infname, java.lang.String inParameterFile, java.lang.String outpath, java.lang.String outfname)
      コンストラクタ
    • メソッドの概要

      すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      private void changeCuvoid()
      xCoreRatioが設定されている場合
      Cu = max {|min - p0|_max , |max - p0|_max}
      Cuboid_.x = Cu * xCoreRatio
      Cuboid_.y = Cu
      Cuboid_.z = Cu
      CPA.cuboid=Cuboid_
      private void checkParam()
      パラメータの検証
      private void doCalculateCellsDistortion​(java.lang.String badCellPointsFilePath)
      歪度を各点すべてに計算する。
      private void doCalculateCellsRatio​(java.lang.String badCellPointsFilePath)
      歪度を各点すべてに計算する。
      (package private) Cell doExpansion​(Cell cell)
      Cellの拡張 蜘蛛の巣処理 CellPairで使用
      private org.apache.commons.math3.linear.RealVector doExpansion​(org.apache.commons.math3.linear.RealVector p)
      pointの拡張 蜘蛛の巣処理
      原点とのオフセット・正規化、拡張係数による拡大、
      正規化の戻し+原点のリセット
      β(|(p-p0)/cuboid|max) ((p-p0)/cuboid)+p0
      private org.apache.commons.math3.linear.RealVector doExpansionNoCube​(org.apache.commons.math3.linear.RealVector p)
      pointの拡張 (非立方体)
      p_p0/cuboid _x < 0 のとき |p_p0/cuboid|_max >
      |getMinValueP_P0DividedByCuboid|であればx方向の倍率はα_xを用いる。
      private double expansionRate​(double mx, double x, int id)
      x-方向の拡大係数 α_xを計算する。
      private double expansionRate_linea​(double x)
      拡大率の計算 オリジナル
      private double expansionRate2​(double x)
      拡大率の計算 2次曲線 2021.05.04
      private org.apache.commons.math3.linear.RealVector[] get3CellPoints​(org.apache.commons.math3.linear.RealVector p)
      get3CellPoints
      private org.apache.commons.math3.linear.RealVector get3dRealVector​(double x, double y, double z)
      getRealVector
      private double getExpansionFactor​(org.apache.commons.math3.linear.RealVector p)
      拡張係数のみを計算する。
      (package private) int[] getIdxFromKey​(int key)
      key 情報から(i,j,k)情報を返す。
      private org.apache.commons.math3.linear.RealVector getMaxValueP_P0DividedByCuboid()
      p_p0|x/cuboid_x ...
      private org.apache.commons.math3.linear.RealVector getMinValueP_P0DividedByCuboid()
      p_p0|x/cuboid_x ...の最小値を求める
      (package private) org.apache.commons.math3.linear.RealVector getPointFromKey​(int key)
      distortion mapのkey 情報から点情報を返す。
      (package private) void inFileOpen()
      入力ファイルのオープン
      static void main​(java.lang.String[] arg)
      main
      private double max_abs​(org.apache.commons.math3.linear.RealVector p)
      |p|_max = max(|x|,|y|,|z|)
      (package private) void outFileOpen()
      出力ファイルのオープン
      (package private) void parameterFileOpen()
      パラメータファイルのオープン
      (package private) org.apache.commons.math3.linear.RealVector parse3​(java.lang.String oneline)
      oneline = (px,py,pz)の読み込み
      上の形でないときにはnullを返す。
      (package private) void parseCuboid​(java.lang.String oneline)
      oneline = cuboid:(px,py,pz)の読み込み
      上の形でないときにはnullを返す。
      (package private) void parseOrigin​(java.lang.String oneline)
      oneline = p0:(px,py,pz)の読み込み
      上の形でないときにはnullを返す。
      (package private) int parsePointNo​(java.lang.String oneline)
      点数
      上の形でないときは-1をかえす。
      private boolean parseValue​(java.lang.String oneline)
      oneline = xx:実数の読み込み
      xx gamma1 or gamma2 or beta or minX or maxX or minY or maxY or minZ or maxZ
      or divX or divY or divZ
      上の形でないときにはfalseを返す。
      private void pointsReadWrite()
      ポイントデータの入力
      拡張処理
      ポイントデータの出力
      Spider2 メイン処理
      (package private) void print​(java.lang.String name, org.apache.commons.math3.linear.RealVector p)
      print Point 点情報の印刷
      private void printMinMaxDivDelta()
      print max_min val
      private void readParameterFile()
      Read Parameter File
      private void readPointsFileAsParameterSet()
      入力pointsデータの呼び込み(1回目)
      パラメータファイルを呼び込むようになったので、
      データ確認程度
      poinrtsファイルからmax min情報を取得
      private void set_max_min_val​(int i, double val)
      x_max,x_min..
      private void setDelta()
      delta_x の設定
      • クラスから継承されたメソッド java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • フィールドの詳細

      • isPointsSave

        private boolean isPointsSave
      • isDistortionCalcurate

        private boolean isDistortionCalcurate
      • isRatioCalcurate

        private boolean isRatioCalcurate
      • infpath

        private java.lang.String infpath
      • infname

        private java.lang.String infname
      • inParameterFile

        private java.lang.String inParameterFile
      • outfpath

        private java.lang.String outfpath
      • outfname

        private java.lang.String outfname
      • points

        private sde.to.model.CTS[] points
      • points_no

        int points_no
      • Points_Header

        private java.lang.String[] Points_Header
      • diff_x

        private sde.to.model.CTS diff_x
        ポイント情報のx座標を格納する。diff_x.size()が x-方向の点の数になる。
        使用するのは、readPointsFileAsParameterSet-> set_max_min_val , duv_x
      • diff_y

        private sde.to.model.CTS diff_y
      • diff_z

        private sde.to.model.CTS diff_z
      • delta_x

        private double delta_x
        x-方向のセルの長さ= (max_x - min_x)/
      • delta_y

        private double delta_y
      • delta_z

        private double delta_z
      • pointsfile

        java.io.File pointsfile
      • paramfile

        java.io.File paramfile
      • reader

        java.io.FileReader reader
      • buff

        java.io.BufferedReader buff
      • writefile

        java.io.PrintWriter writefile
      • alpha_val

        private sde.to.model.CTS alpha_val
    • コンストラクタの詳細

      • CSpider2

        public CSpider2​(java.lang.String infpath,
                        java.lang.String infname,
                        java.lang.String inParameterFile,
                        java.lang.String outpath,
                        java.lang.String outfname)
        コンストラクタ
        パラメータ:
        infpath - 入力ファイルパス
        infname - 入力ファイル名
        inParameterFile - パラメータファイル名
        outpath - 出力ファイルパス
        outfname - 出力ファイル名
      • CSpider2

        CSpider2​(double delta_x,
                 double delta_y,
                 double delta_z)
        CellPaire から doExpansionを呼ぶ時に使用されるコンストラクタ
        パラメータ:
        delta_x - Δx
        delta_y - Δy
        delta_z - Δz
    • メソッドの詳細

      • inFileOpen

        void inFileOpen()
        入力ファイルのオープン
      • parameterFileOpen

        void parameterFileOpen()
        パラメータファイルのオープン
      • outFileOpen

        void outFileOpen()
        出力ファイルのオープン
      • set_max_min_val

        private void set_max_min_val​(int i,
                                     double val)
        x_max,x_min.. の設定
        パラメータ:
        i - 0:x 1:y 2:z
        val - 値
      • parse3

        org.apache.commons.math3.linear.RealVector parse3​(java.lang.String oneline)
        oneline = (px,py,pz)の読み込み
        上の形でないときにはnullを返す。
        パラメータ:
        oneline - 一行入力値
        戻り値:
        点情報(3次元)またはnullをかえす。
      • parseOrigin

        void parseOrigin​(java.lang.String oneline)
        oneline = p0:(px,py,pz)の読み込み
        上の形でないときにはnullを返す。
        パラメータ:
        oneline - 一行入力値
      • parseCuboid

        void parseCuboid​(java.lang.String oneline)
        oneline = cuboid:(px,py,pz)の読み込み
        上の形でないときにはnullを返す。
        パラメータ:
        oneline - cuboidの設定
      • parseValue

        private boolean parseValue​(java.lang.String oneline)
        oneline = xx:実数の読み込み
        xx gamma1 or gamma2 or beta or minX or maxX or minY or maxY or minZ or maxZ
        or divX or divY or divZ
        上の形でないときにはfalseを返す。
        パラメータ:
        oneline - 入力 実数値
        戻り値:
        true;
      • changeCuvoid

        private void changeCuvoid()
        xCoreRatioが設定されている場合
        Cu = max {|min - p0|_max , |max - p0|_max}
        Cuboid_.x = Cu * xCoreRatio
        Cuboid_.y = Cu
        Cuboid_.z = Cu
        CPA.cuboid=Cuboid_
      • parsePointNo

        int parsePointNo​(java.lang.String oneline)
        点数
        上の形でないときは-1をかえす。
        パラメータ:
        oneline - 一行情報
        戻り値:
        pointsファイルに記述された点の数 ないときは-1
      • pointsReadWrite

        private void pointsReadWrite()
                              throws java.io.IOException
        ポイントデータの入力
        拡張処理
        ポイントデータの出力
        Spider2 メイン処理
        例外:
        java.io.IOException - ファイルオープンエラー
      • max_abs

        private double max_abs​(org.apache.commons.math3.linear.RealVector p)
        |p|_max = max(|x|,|y|,|z|)
        パラメータ:
        p - point data
        戻り値:
        |p|_max
      • expansionRate_linea

        private double expansionRate_linea​(double x)
        拡大率の計算 オリジナル
        パラメータ:
        x - 正規化された点の評価値
        戻り値:
         α(x) 値
      • expansionRate2

        private double expansionRate2​(double x)
        拡大率の計算 2次曲線 2021.05.04
        パラメータ:
        x - 正規化された点の評価値
        戻り値:
        α(x) 値
      • getExpansionFactor

        private double getExpansionFactor​(org.apache.commons.math3.linear.RealVector p)
        拡張係数のみを計算する。
        パラメータ:
        p - 点情報
        戻り値:
        拡張係数(alpha
      • doExpansion

        Cell doExpansion​(Cell cell)
        Cellの拡張 蜘蛛の巣処理 CellPairで使用
        パラメータ:
        cell - 拡張対象
        戻り値:
        拡張後のセル
      • doExpansion

        private org.apache.commons.math3.linear.RealVector doExpansion​(org.apache.commons.math3.linear.RealVector p)
        pointの拡張 蜘蛛の巣処理
        原点とのオフセット・正規化、拡張係数による拡大、
        正規化の戻し+原点のリセット
        β(|(p-p0)/cuboid|max) ((p-p0)/cuboid)+p0
        パラメータ:
        p - 対象点
        戻り値:
        拡張点
      • getMinValueP_P0DividedByCuboid

        private org.apache.commons.math3.linear.RealVector getMinValueP_P0DividedByCuboid()
        p_p0|x/cuboid_x ...の最小値を求める
        戻り値:
        p_p0/cuboidの最小値
      • getMaxValueP_P0DividedByCuboid

        private org.apache.commons.math3.linear.RealVector getMaxValueP_P0DividedByCuboid()
        p_p0|x/cuboid_x ... の最大値を求める
        戻り値:
        p_p0/cuboidの最大値
      • expansionRate

        private double expansionRate​(double mx,
                                     double x,
                                     int id)
        x-方向の拡大係数 α_xを計算する。
        p_p0/cuboid _x < 0 のとき
        |p_p0/cuboid|_max > |getMinValueP_P0DividedByCuboid(x)|であればx方向の倍率はα_x= α(|getMinValueP_P0DividedByCuboid(x)|)を用いる。
        それ以外は α_maxを用いる
        p_p0/cuboid_x >= 0のとき
        |p_p0/cuboid|_max > |getMaxValueP_P0DividedByCuboid| であればx方向の倍率はα_x=α(|getMaxValueP_P0DividedByCuboid(x)|)を用いる。
        パラメータ:
        mx - |p_p0/cuboid|_max
        x - p-p0/cuboid|x|
        id - 0:x 1:y 2:z
        戻り値:
        α_x
      • doExpansionNoCube

        private org.apache.commons.math3.linear.RealVector doExpansionNoCube​(org.apache.commons.math3.linear.RealVector p)
        pointの拡張 (非立方体)
        p_p0/cuboid _x < 0 のとき |p_p0/cuboid|_max >
        |getMinValueP_P0DividedByCuboid|であればx方向の倍率はα_xを用いる。
        p_p0/cuboid_x >= 0のとき |p_p0/cuboid|_max > |getMaxValueP_P0DividedByCuboid|
        であればx方向の倍率はα_xを用いる。
        パラメータ:
        p - 対象点
        戻り値:
        拡張点
      • readPointsFileAsParameterSet

        private void readPointsFileAsParameterSet()
                                           throws java.io.IOException
        入力pointsデータの呼び込み(1回目)
        パラメータファイルを呼び込むようになったので、
        データ確認程度
        poinrtsファイルからmax min情報を取得
        例外:
        java.io.IOException - ファイルオープンエラー
      • readParameterFile

        private void readParameterFile()
                                throws java.io.IOException
        Read Parameter File
        例外:
        java.io.IOException - ファイルオープンエラー
      • checkParam

        private void checkParam()
        パラメータの検証
      • setDelta

        private void setDelta()
        delta_x の設定
      • print

        void print​(java.lang.String name,
                   org.apache.commons.math3.linear.RealVector p)
        print Point 点情報の印刷
        パラメータ:
        name - 名前
        p - 点
      • printMinMaxDivDelta

        private void printMinMaxDivDelta()
        print max_min val
      • get3CellPoints

        private org.apache.commons.math3.linear.RealVector[] get3CellPoints​(org.apache.commons.math3.linear.RealVector p)
        get3CellPoints
        パラメータ:
        p - corner point
        戻り値:
        他の3点 rtn[0] +delta_x ,rtn[1] +delta_y ,rtn[2]
      • get3dRealVector

        private org.apache.commons.math3.linear.RealVector get3dRealVector​(double x,
                                                                           double y,
                                                                           double z)
        getRealVector
        パラメータ:
        x - x-値
        y - y-値
        z - z-値
        戻り値:
        realvector(x,y,z)
      • doCalculateCellsDistortion

        private void doCalculateCellsDistortion​(java.lang.String badCellPointsFilePath)
        歪度を各点すべてに計算する。
        しきい値以上のセルは、badCellPointsFileに書き込む。
        パラメータ:
        badCellPointsFilePath - badCellPointsFilePathへのファイルパス
      • doCalculateCellsRatio

        private void doCalculateCellsRatio​(java.lang.String badCellPointsFilePath)
        歪度を各点すべてに計算する。
        しきい値以上のセルは、badCellPointsFileに書き込む。
        パラメータ:
        badCellPointsFilePath - badCellPointFileへのファイルパス
      • getPointFromKey

        org.apache.commons.math3.linear.RealVector getPointFromKey​(int key)
        distortion mapのkey 情報から点情報を返す。
        前提:min max情報および、diff情報が設定されていること。
        パラメータ:
        key - マップキー情報
        戻り値:
        点情報
      • getIdxFromKey

        int[] getIdxFromKey​(int key)
        key 情報から(i,j,k)情報を返す。
        前提:min max情報および、diff情報が設定されていること。
        パラメータ:
        key - マップキー情報
        戻り値:
        (i,j,k)
      • main

        public static void main​(java.lang.String[] arg)
        main
        パラメータ:
        arg - 設定しない