![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
ピクセル座標で2点間の直線上の座標点をPHPで求める方法を教えてください。
やりたいことは、ピクセル座標点A、点Bを直線で結んだ時の
ピクセル座標端の座標(X.Y)を求めたいです。
分かっている情報(引数)としては、
点AのX.Y(可変)
点BのX.Y(可変)
ピクセル座標の高さ(範囲は0~n)
ピクセル座標の幅(範囲は0~n)
条件としては
点Aは必ずピクセル座標の高さ、ピクセル座標の幅の範囲内の場所。
点Bはピクセル座標の高さ、ピクセル座標の幅の範囲外の場所。
点Aから見たときの点Bの場所は上下左右どこの位置でもOK
例えばサンプル画像の例1のように
ピクセル座標の高さ30
ピクセル座標の幅40
点A(22.18)点B(20.39)を直線で結び
この時のピクセル座標の高さ、ピクセル座標の幅上の座標点を求めたいです。
この場合Yの値は30は決まっているのですが、Xの値を求めたい。
例2の場合はXの値は0は決まっていてYの値を求めたいです。
何か数式にあてはめて求めることが出来るのでしょうか?
PHPで作成したあとにそれをC++に置き換えも考えています。
色々考えてみたのですが、
まったくわからない状態です。
どなたかご教授いただければと思います。よろしくお願いいたします。
![「ピクセル座標で2点間の直線上の座標点をP」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/0/866144_5497d954553b8/M.jpg)
No.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さん
早々の回答ありがとうございました。
まさに求めていた回答でした。
早速試してみます。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 2次関数y=ax^2のグラフは点A(4,2)を通っている。y軸上に点BをAB=OB(Oは原点)となる 1 2022/04/08 00:05
- 数学 線形代数の問題について教えて欲しいです。 3 2023/05/06 23:13
- 中学校 中1数学 比例のグラフの座標の読み取り 4 2023/03/28 12:26
- 数学 球面と接する直線の軌跡が表す領域 4 2023/07/30 12:37
- 数学 この問題が分かりません! 右図の直線①②の式は、y=-x+4①、 y=3/4x+1② である。2つの 3 2022/05/04 22:29
- 数学 【 数I 放物線と直線の共有点 】 問題 放物線y=x²+ax+bが点(1,1)を通り, 直線y=2 4 2022/07/18 09:57
- 数学 数学ベクトルに関しての質問 3 2022/05/25 23:21
- 数学 ベクトルの単元で、 平行四辺形の頂点A、B、Cの座標が与えられて、Dの座標を聞かれる問題がありますが 1 2022/07/04 04:53
- 数学 線形代数の2次元直交座標系、極座標系についての問題がわからないです。 2 2022/07/16 20:42
- 物理学 角運動量の式変形が分かりません。 4 2022/08/03 21:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
エクセルである点からの距離で...
-
ダイアログ内コントロールの位...
-
始点、終点の二つの座標と半径...
-
交差する2線分の交点座標の求め方
-
VB6のPrinter.ScaleWidth に対...
-
閉図形の座標の配列が右回りか...
-
複数の回転する長方形の衝突判定
-
Pythonの質問です。 input関数...
-
VBで、開いているExcelシートの...
-
複数コントロール(ラベル)を...
-
ピクセル座標で2点間の直線上...
-
ピクセルの座標を取得するには
-
対数表示のグラフを書くには
-
当たり判定後に面に沿って動か...
-
c#で直線が図形内にあるか判定
-
内積を用いた移動する線分と円...
-
マインクラフト(pc版)で座標...
-
Excel VBA で自在に図形を変化...
-
空間上の二点を結ぶ直線上に任...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
3次元空間上の2つの座標から...
-
エクセルである点からの距離で...
-
始点、終点の二つの座標と半径...
-
エクセルで回転する座標の出し方
-
閉図形の座標の配列が右回りか...
-
ワード上Shapeの位置情報を統一...
-
以下のプログラムは重心を求め...
-
C言語 配列で座標
-
ダイアログ内コントロールの位...
-
ガウシアンフィルタのCプログラム
-
空間上の二点を結ぶ直線上に任...
-
エクセルシート上のマウスポイ...
-
シーケンサー(PLC?)で制...
-
VB6のPrinter.ScaleWidth に対...
-
多角形の内部かどうか判定する方法
-
直線上にある点の座標の求め方
-
y=x^2の座標をプロットするプロ...
-
ピクチャボックスの座標取得
おすすめ情報