こんにちは、エンジニアのひろゆきです。
最近では専ら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" }
まとめ
いかがでしたでしょうか。
簡単な計算でしたが、学生のころを思い出しました…。
複雑なものはかなりしんどい(ライブラリがあれば使ったほうがいい)と思いますが、こうやって式をプログラムにするのは楽しいですね。
それでは、また。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。