tsutsuji.math module

tsutsuji.math.angle_twov(phiA, phiB)[source]

ベクトルA (方位角phiA)からベクトルB(方位角phiB)への方位角変化を求める

tsutsuji.math.calc_pl2xy(phi_deg, lambda_deg, phi0_deg, lambda0_deg)[source]

緯度経度を平面直角座標に変換する - input:

(phi_deg, lambda_deg): 変換したい緯度・経度[度](分・秒でなく小数であることに注意) (phi0_deg, lambda0_deg): 平面直角座標系原点の緯度・経度[度](分・秒でなく小数であることに注意)

tsutsuji.math.calc_xy2pl(x, y, phi0_deg, lambda0_deg)[source]

平面直角座標を緯度経度に変換する - input:

(x, y): 変換したいx, y座標[m] (phi0_deg, lambda0_deg): 平面直角座標系原点の緯度・経度[度](分・秒でなく小数であることに注意) * x軸正方向は北、y軸正方向は東を指すことに注意

tsutsuji.math.cross_kilopost(track, result)[source]

minimumdistで求めたtrack上の最近傍点について、対応する距離程を求める。

Parameters:
  • track (ndarray) -- np.array([x0,y0],[x1,y1],...,[xn,yn])

  • result (list) -- minimumdistの出力

Returns:

最近傍点の距離程。track端点が最近傍点の場合はNone

Return type:

float

tsutsuji.math.cross_normal(position, track)[source]

曲線trackの法線のうち、positionを通過するものを求める

Parameters:
  • ndarray -- position: np.array([x,y])

  • ndarray -- track: np.array([[x0,y0],[x1,y1],...,[xn,yn]])

Return:

tsutsuji.math.crosspoint_2lines(A, eA, B, eB)[source]

2直線X, Yの交点Pを求める

Parameters:
  • A (ndarray) -- 直線Xの通過点

  • eA (ndarray) -- 直線Xの単位ベクトル

  • B (ndarray) -- 直線Yの通過点

  • eB (ndarray) -- 直線Yの単位ベクトル

Returns:

(PAの距離, 点Pの座標)

Return type:

(ndarray, ndarray)

tsutsuji.math.interpolate_with_dist(track, element, cp_dist)[source]
tsutsuji.math.lat2py(l, z, L=85.05112878)[source]

緯度をマップタイルのピクセル座標に変換する - input:

l: 変換したい緯度(latitude) [deg] z: ズームレベル (0-18) L: 緯度の上限値 [deg]

  • output:

    y: ピクセル座標y成分 (256で割るとタイル座標になる)

tsutsuji.math.long2px(l, z)[source]

経度をマップタイルのピクセル座標に変換する - input:

l: 変換したい経度(longitude) [deg] z: ズームレベル (0-18)

  • output:

    x: ピクセル座標x成分 (256で割るとタイル座標になる)

tsutsuji.math.mindist_crossline(position, phiA, track)[source]

曲線trackとpositionを通る方位角phiAの直線Uの交点について、positionとの距離が最小となるものを求める

track上の各点をT_k, positionをP, 座標原点Oとして、直線Uに沿う単位ベクトルをeUで表す。 OT_k - (OP + α * eU) が最小となるようなαを求める。

Parameters:
  • position (ndarray) -- np.array([x,y])

  • phiA (float) -- 絶対座標x軸に対して直線がなす角

  • track (ndarray) -- np.array([[x0,y0],[x1,y1],...,[xn,yn]])

Returns:

[[sort_ix: 交点との距離が最小となる点のインデックス, alpha: positionから点列交点の距離, distance: 求めた交点から点列の距離],...] :

Return type:

np.array

tsutsuji.math.minimumdist(track, p)[source]

二次元曲線trackについて、座標pから最も近い曲線上の点を求める。 trackの点間は線形補間される。

Parameters:
  • track (ndarray) -- np.array([x0,y0],[x1,y1],...,[xn,yn])

  • p (ndarray) -- np.array([xp,yp])

Returns:

float

mindist: 曲線交点との距離

ndarray

crosspt: 曲線との交点座標

int

min_ix: track中で最もpに近い点のindex

int

second_min_ix: 最もpに近い点が含まれる区間の他端index。直交点が見つからない場合は-1。

tsutsuji.math.phi2el(phi)[source]

角度phi [rad]の単位ベクトルを返す :param phi: 求める単位ベクトルが座標軸に対してなす角 [rad] :type phi: float

Returns:

np.array([float, float])

tsutsuji.math.px2long(x, z)[source]

ピクセル座標を経度に変換する - input:

x: 変換したいピクセル座標x成分 z: ズームレベル (0-18)

  • output:

    l: 経度 [deg]

tsutsuji.math.py2lat(y, z, L=85.05112878)[source]

ピクセル座標を経度に変換する - input:

y: 変換したいピクセル座標y成分 z: ズームレベル (0-18) L: 緯度の上限値 [deg]

  • output:

    l: 緯度 [deg]

tsutsuji.math.rotate(tau1)[source]

2次元回転行列を返す。

tau1: 回転角度 [rad]