次の関数は、DPI 値を受け取り、パーセンテージを返します。
100% if the value is bigger than 200
50% to 100% if the value is between 100 and 200
25% to 50% if the value is between 80 and 100
0% to 25% if the value is lower than 80
static public function interpretDPI($x) {
if ($x >= 200) return 100;
if ($x >= 100 && $x < 200) return 50 + 50 * (($x - 100) / 100);
if ($x >= 80 && $x < 100) return 25 + 25 * (($x - 80) / 20);
if ($x < 80) return 25 * ($x / 80);
}
ここで、これらのルールに従ってこの関数を変更する必要があり、次を返します。
100% if the value is bigger than 100
75% to 100% if the value is between 72 and 100
50% to 75% if the value is between 50 and 72
0% to 50% if the value is lower than 50
これを達成するために、私はその動作をどのように理解したかに応じて関数を再モデル化しようとしました:
static public function interpretDPI($x) {
if ($x >= 100) return 100;
if ($x >= 72 && $x < 100) return 75 + 75 * (($x - 72) / 28);
if ($x >= 50 && $x < 72) return 50 + 50 * (($x - 50) / 22);
if ($x < 50) return 25 * ($x / 50);
}
しかし、結果は明らかに間違っています。たとえば、DPI が 96 の場合、結果として 141% になります。明らかにこれは間違っていますが、その理由と修正方法を知るための数学的理解が不足しています。
関数の仕組みについて何か誤解していたに違いありません。
誰でもこれについて詳しく説明できますか?