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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Winterad
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 14
#1

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

17.01.2013, 10:05. Просмотров 334. Ответов 4
Метки нет (Все метки)

Доброго времени суток!

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

Помогите пожалуйста такое реализовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 10:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить точки круга (C++):

Определить точки пересечения круга и прямоугольника - C++
Помогите, пожалуйста!( Даны вещественные числа x1, y1, r, x2, y2, x3, y3. Определите, существуют ли общие точки у круга с центром в точке...

Определить минимальный радиус круга с центром в начале координат, который содержит все точки - C++
1. В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке:...

Точки круга - C++
Помогите написать программу ---------------------------------------------------------------------------------------------- Сколько...

Подсчитать точки, находящиеся вне круга с заданным диаметром - C++
есть задача: 13. Пара (Xk, Yk) представляет координаты одной из n точек на плоскости. Подсчитать точки, находящиеся вне круга диаметром D,...

Найти наименьший радиус круга и его центр в который бы попали данные точки - C++
Найти наименьший радиус круга и его центр в который бы попали данные точки. На первой строке подается кол-во точек n, затем на n...

Выбрать все точки совокупности, лежащие вне круга заданного радиуса R с центром в заданной точке - C++
Дана совокупность N различных точек плоскости. Выбрать все точки совокупности, лежащие вне круга заданного радиуса R с центром в ...

4
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,534
Завершенные тесты: 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;
}
1
Winterad
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 14
17.01.2013, 12:33  [ТС] #3
Спасибо.

А покажите пожалуйста пример кода, который определяет только точки по краю круга. Без заполнения середины.
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,534
Завершенные тесты: 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 придумано из головы. Можно туда вписать любое другое.
1
Igor3D
915 / 514 / 55
Регистрация: 01.10.2012
Сообщений: 2,543
17.01.2013, 15:29 #5
Цитата Сообщение от SatanaXIII Посмотреть сообщение
C++
1
if( (pow((x-a),2) + pow((y-b),2)) <= pow(R,2) )
Неаккуратно
0
17.01.2013, 15:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2013, 15:29
Привет! Вот еще темы с ответами:

Круг, множество точек, прямая проходящая через две точки и через центр круга - C++
плиз хелп. Нужно вывести координаты двух точек. #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;random&gt; #include &lt;ctime&gt; using...

Определить номер точки, через которую проходит окружность с центром в начале координат, внутрь которой попадают все оставшиеся точки. - C++
Имеется n точек на плоскости. Определить номер той, через которую проходит окружность с центром в начале координат, внутрь которой попадают...

Определить разницу площадей круга и квадрата - C++
Задан радиус круга К. Определить разницу площадей круга и квадрата, вписанного в этот круг. Заданий радіус кола К Визначити різницю...

Определить количество плиток попадающих внутрь круга - C++
Лич Сандро проводит свои научные исследования в магии огня. Сандро стоит в центре огромного квадратного зала площадью миллион квадратных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru