msg
Web制作
ひろゆきひろゆき
  • このエントリーをはてなブックマークに追加

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

361

マクロミル

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

最近では専ら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の3代目広報担当ヨシキからのお知らせを受け取る方法

3代目広報担当ヨシキ

いつもLIGブログをご覧いただきありがとうございます。LIGの広報担当ヨシキです。Facebook、Twitter、メルマガを通じて、皆様と交流を深めていきたいと思います。 僕の発信する情報はLIGからの公式メッセージと思っていただいて結構です。「いいね!」を押すも良し、twitterをフォローするも良し。全ては皆様次第です。 なによりのおすすめはメールマガジンですので、お気軽に登録してくださいね!

twitter

LIGの事をつぶやいてくれたら、喜んでフォローします。

mail magazine

メルマガ登録はこちら

くだらない情報を配信します。

RSS

RSSを登録する

記事は毎日3本更新する予定です!RSSの登録をすると便利ですよ。

facebook