縦横比 sx/sy の長方形 S と、他の 2 つの長方形 A (縦横比 ax/ay) と B (縦横比 bx/by) がある場合、形状 A と B のどちらがSに最も近い縦横比? 形状のサイズは重要ではありません。
(sx/sy)/(ax/ay) と (sx/sy)/(bx/by) のどちらが 1 に近いですか?
私が実際にやろうとしているのは、PPTX スライドのどの形状が、サイズ変更されてからその形状に合わせてトリミングされる画像に最も適しているかを調べることです。別のアプローチは、どの形状が失われるピクセルが最も少ないかを判断することだと思いますが、私のコードでは、アスペクト比を比較することでそれを行うことができれば簡単になります.
最終的に、次のように実装された以下のアルゴリズムを使用しました (フィードバックを提供してくれた Matt Ball に感謝します)。
ShapeInPPTXLocation closest;
double imageAR = a_imageDim.getWidth()/a_imageDim.getHeight();
double aspectRatioCandidateA = a_candidateA.getWidth()/a_candidateA.getHeight();
double aspectRatioCandidateB = a_candidateB.getWidth()/a_candidateB.getHeight();
double closenessScoreA=1-(imageAR/aspectRatioCandidateA);
double closenessScoreB=1-(imageAR/aspectRatioCandidateB);
if (Math.abs(closenessScoreA) <= Math.abs(closenessScoreB))
{
closest=a_candidateA;
}
else
{
closest=a_candidateB;
}