Форум программистов, компьютерный форум CyberForum.ru

Определить точки круга - C++

Восстановить пароль Регистрация
 
Winterad
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 14
17.01.2013, 10:05     Определить точки круга #1
Доброго времени суток!

Допустим есть матрица:
C++
1
int matrix [41][41];
Центр круга x = 20 и y = 20. Радиус = 15.
Необходимо обозначить на матрице точки круга, записав единицу(1) в нужные элементы матрицы.

Помогите пожалуйста такое реализовать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 10:05     Определить точки круга
Посмотрите здесь:

Точки круга C++
C++ Определить номер точки, через которую проходит окружность с центром в начале координат, внутрь которой попадают все оставшиеся точки.
Выбрать все точки совокупности, лежащие вне круга заданного радиуса R с центром в заданной точке C++
Определить разницу площадей круга и квадрата C++
Определить площадь круга и длину окружности,ограничивающей круг C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
17.01.2013, 10:41     Определить точки круга #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream.h>
#include <math.h>
 
 
int main()
{
int a=20, b=20, R=15; // Координаты центра и радиус
 
const int mx=41, my=41;
 
int matrix [mx][my];
 
for(int x=0; x<mx; x++)
  for(int y=0; y<my; y++)
    {
    if( (pow((x-a),2) + pow((y-b),2)) <= pow(R,2) ) //(x-a)^2 + (y-b)^2 <= R^2 Формула круга
      matrix[x][y]=1;
    else
      matrix[x][y]=0;
    }
 
 
for(int x=0; x<mx; x++)
  {
  for(int y=0; y<my; y++)
    {
    cout << matrix[x][y] << " "; // Вывод на экран
    }
  cout << endl;
  }
 
cin.ignore();
return 0;
}
Winterad
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 14
17.01.2013, 12:33  [ТС]     Определить точки круга #3
Спасибо.

А покажите пожалуйста пример кода, который определяет только точки по краю круга. Без заполнения середины.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
17.01.2013, 15:17     Определить точки круга #4
Цитата Сообщение от Winterad Посмотреть сообщение
А покажите пожалуйста пример кода, который определяет только точки по краю круга. Без заполнения середины.
Ну вот балуйся с этим условием:
C++
1
if( (pow((x-a),2) + pow((y-b),2)) <= pow(R,2) )
Если заместо <= поставить ==, тогда будут выведены точки, которые точно лежат на границе окружности. Но при такой малой дискретизации они врятли составят замкнутый круг. Так что надо использовать условие типа
C++
1
2
    if( (pow((x-a),2) + pow((y-b),2)) <= pow(R,2) &&
        (pow((x-a),2) + pow((y-b),2)) >= pow(R,2)-30)
То есть выводить точки, лежащие не точно на окружности, а в некотором абстрактном приближении (-30).
При чем в данном случае (когда вычитается только из второго условия) нарисованная таким образом окружность никогда не выйдет за пределы своего радиуса. А если, к примеру, к первому условию прибавить пятнадцать (+15), а из второго вычесть так же пятнадцать (-15), то окружность будет отображена без смещения вовнутрь, но при этом уже выйдет за границы первоначального радиуса. Это как толщина линии.
P.S. Для надежности уточню: само число 30 придумано из головы. Можно туда вписать любое другое.
Igor3D
792 / 409 / 33
Регистрация: 01.10.2012
Сообщений: 2,067
17.01.2013, 15:29     Определить точки круга #5
Цитата Сообщение от SatanaXIII Посмотреть сообщение
C++
1
if( (pow((x-a),2) + pow((y-b),2)) <= pow(R,2) )
Неаккуратно
Yandex
Объявления
17.01.2013, 15:29     Определить точки круга
Ответ Создать тему
Опции темы

Текущее время: 15:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru