У меня есть растровое изображение, которое устанавливает две переменные centreX, centreY через метод onTouchEvent(). Из этих координатах x, y я рисую круг по растровому изображению и могу менять окружные пиксели на разные значения rgb через слайдBar. Я нацелен на внутренние пиксели круга с помощью алгоритма, но, к сожалению, поскольку он стоит, я должен искать весь пиксель растрового изображения по пикселям, чтобы нацелить пиксели окружности. у этого есть массивный вызов вызова метода, который я хотел бы уменьшить.
То, что я собираюсь сделать, - создать ограничивающий прямоугольник вокруг круга, чтобы у моего алгоритма было меньше места для поиска, так что мы с надеждой будем ускорять работу. Как я могу создать прямоугольник вокруг круга, используя координаты окружности x, y и радиус 50?
Спасибо матовой.
public void findCirclePixels(){
for (int i=0; i < bgr.getWidth(); ++i) {
for (int y=0; y < bgr.getHeight(); ++y) {
if( Math.sqrt( Math.pow(i - centreX, 2) + ( Math.pow(y - centreY, 2) ) ) <= radius ){
bgr.setPixel(i,y,Color.rgb(Progress+50,Progress,Progress+100));
}
}
}
}// end of changePixel()
Измените пределы внешнего контура от circle.x - радиус до радиуса circle.x +, а ваш внутренний контур ограничивается от круга .y - радиус до круга .y + радиус. Вы можете, в зависимости от того, какие ваши x и y могут быть, должны проверить, не превышает ли какое-либо из этих значений меньше 0 или превышает пределы ширины или высоты ваших изображений.
Это отлично работает.
public void findCirclePixels(){
for (int i=centreX-50; i < centreX+50; ++i) {
for (int y=centreY-50; y <centreY+50 ; ++y) {
if( Math.sqrt( Math.pow(i - centreX, 2) + ( Math.pow(y - centreY, 2) ) ) <= radius ){
bgr.setPixel(i,y,Color.rgb(Progress+50,Progress,Progress+100));
}
}
}
}// end of changePixel()