Неверное назначение CGPoint

Мой код:

CGFloat scaleFactor = newSize.width / oldSize.width;
CGFloat newCenterX = center_.x * scaleFactor;
CGFloat newCenterY = center_.y * scaleFactor;

CGPoint newCenter = CGPointMake(newCenterX, newCenterY);
//newCenter.x = newCenterX;
//newCenter.y = newCenterY;

CGFloat newRaduis = raduis_ * scaleFactor;
newCenter.y += newSize.height - ceilf(scaleFactor) * oldSize.height;
NSLog(@"Convertion from %@ to %@", NSStringFromCGSize(oldSize), NSStringFromCGSize(newSize));
NSLog(@"old center = %@, old radius = %f", NSStringFromCGPoint(center_), raduis_);
NSLog(@"new center = %@, new radius = %f", NSStringFromCGPoint(newCenter), newRaduis);
NSLog(@"new center x = %f, new center y = %f", newCenterX, newCenterY);

И вывод:

2012-09-14 14:18:35.027 TestApp[425:4b93] Convertion from {1080, 1920} to {320, 415}
2012-09-14 14:18:35.031 TestApp[425:4b93] old center = {246, 822}, old radius = 20.000000
2012-09-14 14:18:35.033 TestApp[425:4b93] new center = {73, -1261}, new radius = 5.925926
2012-09-14 14:18:35.035 TestApp[425:4b93] new center x = 73, new center y = 244

На выходе - новый центр = {73, -1261}, новый радиус = 5,925926. Почему центральное значение y отрицательно? Что я делаю неправильно?

Заранее спасибо за помощь


person Alexey Dvoryanskiy    schedule 14.09.2012    source источник
comment
Даже если я напишу - CGPoint newCenter = CGPointMake(newCenterX, 100.0) - в выводе newCenter.y все равно будет отрицательно!   -  person Alexey Dvoryanskiy    schedule 14.09.2012


Ответы (1)


Ошибка из-за вашей строки

newCenter.y += newSize.height - ceilf(scaleFactor) * oldSize.height;
  • scaleFactor примерно равно 0.2962, поэтому ceilf(scaleFactor) равно 1.
  • newSize.height равно 415, oldSize.height равно 1920, поэтому 415 - 1*1920 равно -1505, а newCenter.y += -1505 изменяет newCenter.y с 243.556 на 243.556 + (-1505) = 1261.444.

Так что это кажется законным, что newCenter.y -1261 после этой строки.

person AliSoftware    schedule 14.09.2012