Van nekem egy "dobozom", abban egy másik "doboz". A külső dobozt elmozgathatom és átméretezhetem és a belső doboz koordinátáit szeretném kiszámolni. Mutatom:
#include <stdint.h>
#include <math.h>
void calc_new_sub_area
(
int32_t container_ox, int32_t container_oy, uint32_t container_ow, uint32_t container_oh,
int32_t container_nx, int32_t container_ny, uint32_t container_nw, uint32_t container_nh,
int32_t sub_area_ox, int32_t sub_area_oy, uint32_t sub_area_ow, uint32_t sub_area_oh,
int32_t *sub_area_nx, int32_t *sub_area_ny, uint32_t *sub_area_nw, uint32_t *sub_area_nh
)
{
float hor_ratio = container_nw / container_ow;
float ver_ratio = container_nh / container_oh;
*sub_area_nw = (uint32_t)round((float)sub_area_ow * hor_ratio);
*sub_area_nh = (uint32_t)round((float)sub_area_oh * ver_ratio);
}
Keresgettem és olyat találtam, hogy
int32_t container_owp2 = (int32_t)(container_ow >> 1);
*sub_area_nx = container_owp2 + (int32_t)round(hor_ratio * (float)(sub_area_ox - container_owp2));
int32_t container_ohp2 = (int32_t)(container_oh >> 1);
*sub_area_ny = container_ohp2 + (int32_t)round(ver_ratio * (float)(sub_area_oy - container_ohp2));
de ez csak akkor jó, ha a doboz nem mozdult el, azaz a közepe ugyanott maradt. Valakinek van ötlete?