Выбор радиуса круга, чтобы полностью заполнить прямоугольник - PullRequest
2 голосов
/ 23 мая 2010

библиотека изображений pixman может рисовать радиальные цветовые градиенты между двумя кругами. Мне бы хотелось, чтобы радиальный градиент полностью заполнил прямоугольную область, определяемую «шириной» и «высотой». Теперь мой вопрос, как мне выбрать радиус внешнего круга?

Мои текущие параметры следующие:

A) inner circle (start of gradient)
center pointer of inner circle: (width*0.5|height*0.5)
radius of inner circle: 1
color: black

B) outer circle (end of gradient)
center pointer of outer circle: (width*0.5|height*0.5)
radius of outer circle: ???
color: white

Как мне выбрать радиус внешнего круга, чтобы убедиться, что внешний круг полностью заполнит мой ограничительный прямоугольник, определяемый шириной * высотой. В углах не должно быть пустых областей, область должна быть полностью закрыта кругом. Другими словами, ширина ограничительного прямоугольника, высота должны полностью соответствовать внешнему кругу. Выбор

outer_radius = max(width, height) * 0.5

поскольку радиуса для внешнего круга явно недостаточно. Это должно быть больше, но насколько больше?

Спасибо!

Ответы [ 6 ]

6 голосов
/ 23 мая 2010

Диаметр круга должен быть диагональю прямоугольника, который вы можете легко вычислить из теоремы Пифагора.т.е.:

outer_radius = 0.5 * sqrt(width * width + height * height)

0 голосов
/ 23 мая 2010

Требуется длина гипотенузы прямоугольного треугольника со сторонами, равными ширине / 2 и высоте / 2. Как вариант, 1/2 длины диагонали прямоугольника. Квадратный корень из (ч / 2 ^ 2 + ш / 2 ^ 2) или 1/2 * квадратный корень из (h ^ 2 + w ^ 2)

0 голосов
/ 23 мая 2010

Используйте Пифагора:

outer_radius = sqrt(width*width + height*height)*0.5
0 голосов
/ 23 мая 2010

Ваш вопрос не ясен, но, возможно, вы хотите sqrt (w ^ 2 + h ^ 2) / 2

Это расстояние от центра прямоугольника до его угла.

0 голосов
/ 23 мая 2010

Сделайте небольшой набросок и примените теорему Пифагора:

[Эскизное изображение использовалось здесь; ссылка не работает, и хост в любом случае помечен как вредоносная программа]

В коде:

outer_radius = sqrt(0.25 * (width*width + height*height))
0 голосов
/ 23 мая 2010

Это просто Пифагор:

outer_radius = sqrt((width / 2)^2 + (height / 2)^2);

или более просто:

outer_radius = sqrt(width^2 + height^2) / 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...