- ベストアンサー
ピクセル座標で2点間の直線上の座標点を求める方法【PHP】
- ピクセル座標で2点間の直線上の座標点をPHPで求める方法について解説します。指定された2つの座標点を直線で結んだ時のピクセル座標上の座標点(X.Y)を求めるためのアルゴリズムを説明します。
- ピクセル座標の高さや幅の範囲内にある点Aと範囲外にある点Bを直線で結ぶ場合の、ピクセル座標上の座標点を求めるには、数式を使用します。具体的な数式や計算方法を詳しく説明します。
- この質問では、ピクセル座標上の2つの座標点を直線で結ぶ場合の座標点を求める方法について説明しています。PHPを使用してアルゴリズムを実装し、結果を得ることができます。また、将来的にはC++に置き換えることも考えているようです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
。。。単なる内分比の問題です。 点A = (Ax, Ay) 点B = (Bx, By) とし、求めたい点を 点P = (Px, Py) とします。 例1)Px = {(By - 30) * Ax + (30 - Ay) * Bx} / (- Ay + By) 例2)Py = (- Bx * Ay + Ax * By) / (Ax - Bx) [PHP] define ('Nx', 30); define ('Ny', 40); $a = array ('x' => ***, 'y' => ***); $b = array ('x' => ***, 'y' => ***); /* PHP 限定 C++ の場合は、if で地味に */ switch (true) { case $b['x'] < 0 : $p = interior_division($a, $b, array ($a['x'], - $b['x'])); break; case $b['x'] > Nx : $p = interior_division($a, $b, array (Nx - $a['x'], $b['x'] - Nx)); break; case $b['y'] < 0 : $p = interior_division($a, $b, array ($a['y'], - $b['y'])); break; case $b['y'] > Ny : $p = interior_division($a, $b, array (Ny - $a['y'], $b['y'] - Ny)); break; default : echo 'The condition is not satisfied.'; } function interior_division($a, $b, $r) { return array ( 'x' => ($r[1] * $a['x'] + $r[0] * $b['x']) / ($r[0] + $r[1]), 'y' => ($r[1] * $a['y'] + $r[0] * $b['y']) / ($r[0] + $r[1]) ); } [/PHP]
お礼
yuu_xさん 早々の回答ありがとうございました。 まさに求めていた回答でした。 早速試してみます。 本当にありがとうございました。