Я очень смущен этим ... Вот выдержка из моего кода ..
float m = 0.0, c = 0.0;
printf("toprightx = %d bottomrightx = %d toprighty = %d bottomrighty = %d\n",
toprightx, bottomrightx, toprighty, bottomrighty);
// find m and c for symmetry line
if (toprightx == bottomrightx) {
m = (-toprighty + bottomrighty);
}
else {
m = (-toprighty + bottomrighty) / (toprightx - bottomrightx);
}
c = -toprighty - (m * toprightx);
printf("m = %f and c = %f\n", m, c);
А вот и вывод:
toprightx = 241 bottomrightx = 279 toprighty = 174 bottomrighty = 321
m = -3.000000 and c = 549.000000
Почему выходное округление m и c? Я объявил их как числа с плавающей точкой, поэтому я не понимаю, почему код возвращает целые числа. Правильное значение m должно быть -3,8684.
(Обратите внимание, что toprightx, bottomrightx, toprighty, bottomrighty были объявлены как целые числа далее в коде.)