• LIGの広告成功事例
WEB

プログラミングの判定処理で困ったときの計算式「2つの四角形を比較してどちらが横長か」

プログラミングの判定処理で困ったときの計算式「2つの四角形を比較してどちらが横長か」

こんにちは、エンジニアのひろゆきです。

最近では専らWordPressのカスタマイズをしている僕ですが、あるとき、「2つの四角形を比較して、どちらが横長か?」という判定処理を書く場面に出くわしました。

こんなん簡単やー、と思って力技でやろうとしたら、地味に時間を食ってしまいました。
というわけで今回は、heightとwidthを持ったAとBを渡して横長の方を返すという処理を書いてみました。

以下、ご覧ください。

計算内容

今回使う計算式です。力技ではなく、計算式を使うことが重要ですね。

A横幅:A高さ=B横幅:X

X=A高さ×B横幅÷A横幅

これで、XよりBの高さの値が大きければAのほうが横長、ということになります。

コード

上記の計算式をもとに処理を書きました。aとbにはそれぞれheightとwidth、名前を設定します。

計算処理

function get_oblong($a,$b){
	$height1 = $a['height'];
	$width1 = $a['width'];
	$height2 = $b['height'];
	$width2 = $b['width'];
	$assumption = $width2*$height1/$width1;
	if($assumption < $height2){
		return $a;
	}else{
		return $b;
	}
}

実行処理

$a['height'] = 1;
$a['width'] = 1;
$a['name'] = 'A';

$b['height'] = 4;
$b['width'] = 2;
$b['name'] = 'B';

$ret = get_oblong($a,$b);
var_dump($ret);

実行結果

array(3) { ["height"]=> int(1) ["width"]=> int(1) ["name"]=> string(1) "A" }

まとめ

いかがでしたでしょうか。

簡単な計算でしたが、学生のころを思い出しました…。
複雑なものはかなりしんどい(ライブラリがあれば使ったほうがいい)と思いますが、こうやって式をプログラムにするのは楽しいですね。

それでは、また。

この記事を書いた人

ひろゆき
ひろゆき バックエンドエンジニア 2010年入社
エンジニアのひろゆきや。大阪生まれの大阪育ち。LIGを代表するエンジニアになるため、頑張るで。ほんま、よろしくやで。