вычислить коэффициент масштабирования многоугольника, чтобы получить заданную площадь многоугольника - PullRequest
0 голосов
/ 11 июля 2020

У меня есть набор точек для многоугольника. Я могу получить его площадь.

для примеров у меня есть polygon.Area () = 1500;

теперь мне нужно сделать этот многоугольник, который дает площадь 1350, как масштабировать значение коэффициента этого. Я пытаюсь добиться его масштабирования по соотношению ограничивающего прямоугольника. Но это не работает. Я пробую так. но ответ неверен.

Я получаю ограничивающую рамку многоугольника (минимальная точка и максимальная точка) поля.

    float OldArea = 1500.0f;
    float newArea = 1350.0f;
    
    Vec2 Min_Point =  polygon.Min();
    Vec2 Max_Point = polygon.Max();
    
    float SizeX = Min_Point.SizeX(Max_Point);// it give Length of X of Bounding Box (x2-x1)
    float SizeY = Min_Point.SizeY(Max_Point);//it give Length of Y of Bounding Box (y2-y1)
    
    float ratio  = SizeX/SizeY;
    
        float aa = sqrt(NewArea/ ratio); // get first Length
        float bb =  NewArea/aa;  // ge4t second length
        float Scale_Ratio = (bb/SizeY ); // get scale ratio // but this is not correct.

Пожалуйста, помогите мне. Заранее спасибо.

1 Ответ

0 голосов
/ 11 июля 2020

Scale_Ratio = Math.sqrt (newArea / oldArea)

Это потому, что соотношение будет применено к площади дважды - один раз, когда вы умножаете ширину, и один раз, когда вы умножаете высоту, поэтому соотношение масштабированных площадей - это квадрат отношения, примененного к каждому измерению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...