Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
7 / 7 / 1
Регистрация: 28.03.2010
Сообщений: 99

Количесиво углов

01.12.2011, 01:11. Показов 1194. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть координаты контура фигуры(ну или сама фигура, в отдельном битмапе), нужно определить кол-во углов!
Как?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2011, 01:11
Ответы с готовыми решениями:

Вычисление углов
нужно вычислить значение cos дается угол в градусах alpha вычисляю по принципу double a=Math.Cos(Math.PI/180*alpha) при alpha=90...

Расчет углов. Задание манипулятор
Доброго времени суток. Это моя 1 тема на форуме поэтому не судите строго. Учу c# самостоятельно и не долго. Прохожу задания вот на этом...

Найти координаты углов прямоугольника
Здравствуйте. Помогите пожалуйста решить данное задание. Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям...

14
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.12.2011, 01:48
А если фигура - круг?
0
7 / 7 / 1
Регистрация: 28.03.2010
Сообщений: 99
01.12.2011, 02:05  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
А если фигура - круг?
Ну это уже потом, а вообще как я представляю, если круг - то там будет "много" углов)) т.е. если углов больше N. то круг.
Мне б хотя бы, чтоб, распозновало кол-во углов у примитивных фигур!
0
54 / 29 / 7
Регистрация: 28.02.2011
Сообщений: 105
01.12.2011, 07:36
алгоритм мне представляется таким:
1. берем 3 следующие друг за другом точки с их координатами (A->B->C)
2. находим 2 длины:
а) от A до C = D
б) длину всей цепочки (от А до В + от В до С) = E
3. Если D=E - в точке B нет угла
4. Если D!=Е - в точке В есть угол
0
7 / 7 / 1
Регистрация: 28.03.2010
Сообщений: 99
01.12.2011, 12:18  [ТС]
Ваш алгоритм не работает!
0
54 / 29 / 7
Регистрация: 28.02.2011
Сообщений: 105
01.12.2011, 12:28
а что тут может не работать?
0
7 / 7 / 1
Регистрация: 28.03.2010
Сообщений: 99
01.12.2011, 12:41  [ТС]
ну к примеру: контур треугольника
1 1 1 0 0 0
1 0 1 1 0 0
1 0 0 1 1 0
1 0 0 0 1 0
1 0 0 0 0 1
0 1 1 1 1 1
В месте отмеченном красный цветом, по вашему алгоритму есть угол, но в реальности его там нету, На прямоугольниках алгоритм работает нормальнО!
0
54 / 29 / 7
Регистрация: 28.02.2011
Сообщений: 105
01.12.2011, 12:47
Цитата Сообщение от xWinDx Посмотреть сообщение
ну к примеру: контур треугольника
1 1 1 0 0 0
1 0 1 1 0 0
1 0 0 1 1 0
1 0 0 0 1 0
1 0 0 0 0 1
0 1 1 1 1 1
В месте отмеченном красный цветом, по вашему алгоритму есть угол, но в реальности его там нету, На прямоугольниках алгоритм работает нормальнО!
а разве не треугольник с 3-мя углами выделен красным?
0
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
01.12.2011, 12:49
Угол-то тут есть, это просто Вы его не видите глазами...
Контур должен быть таким, чтобы выше описанный алгоритм сработал:
10000
11000
10100
10010
11111
0
7 / 7 / 1
Регистрация: 28.03.2010
Сообщений: 99
01.12.2011, 13:28  [ТС]
Цитата Сообщение от SpawnDDR Посмотреть сообщение
Угол-то тут есть, это просто Вы его не видите глазами...
Контур должен быть таким, чтобы выше описанный алгоритм сработал:
10000
11000
10100
10010
11111
Да, чтоб работал вышепредложенный алгоритм контур должен быть таким!
Но, я ищу контур методом Жука, и получатся от таким, т.к. треугольник не всегда прямоугольный и равнобедренный!
0
54 / 29 / 7
Регистрация: 28.02.2011
Сообщений: 105
01.12.2011, 13:33
для примера немного упростил пример... но треугольник взял твой:

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication14
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            Point[] mas = new Point[14];
            mas[0] = new Point(0,4);
            mas[1] = new Point(1,3);
            mas[2] = new Point(2,2);
            mas[3] = new Point(3,1);
            mas[4] = new Point(4,0);
            mas[5] = new Point(3,0);
            mas[6] = new Point(2,0);
            mas[7] = new Point(1,0);
            mas[8] = new Point(0,0);
            mas[9] = new Point(0,1);
            mas[10] = new Point(0,2);
            mas[11] = new Point(0,3);
            mas[12] = new Point(0,4);
            mas[13] = new Point(1,3);
            double er;
            double fx;
            for (int i = 0; i <= 11; i++)
            {
                er = System.Math.Sqrt((mas[i].Y - mas[i + 1].Y) * (mas[i].Y - mas[i + 1].Y) + (mas[i].X - mas[i + 1].X)*(mas[i].X - mas[i + 1].X));
                er = er + System.Math.Sqrt((mas[i+1].Y - mas[i + 2].Y) * (mas[i+1].Y - mas[i + 2].Y) + (mas[i+1].X - mas[i + 2].X) * (mas[i+1].X - mas[i + 2].X));
                fx = System.Math.Sqrt((mas[i].Y - mas[i + 2].Y) * (mas[i].Y - mas[i + 2].Y) + (mas[i].X - mas[i + 2].X) * (mas[i].X - mas[i + 2].X));
                if (er != fx)
                {
                    listBox1.Items.Add("Угол в точке " + mas[i+1]);
                }
                 
            }
 
        }
    }
}
показал 3 угла)

Добавлено через 4 минуты
Цитата Сообщение от xWinDx Посмотреть сообщение
ну к примеру: контур треугольника
1 1 1 0 0 0
1 0 1 1 0 0
1 0 0 1 1 0
1 0 0 0 1 0
1 0 0 0 0 1
0 1 1 1 1 1
В месте отмеченном красный цветом, по вашему алгоритму есть угол, но в реальности его там нету, На прямоугольниках алгоритм работает нормальнО!
покажите код чтоб понятней было
0
7 / 7 / 1
Регистрация: 28.03.2010
Сообщений: 99
01.12.2011, 14:06  [ТС]
Использовал Ваш код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            foreach (List<Point> LP in FigMas)
                    {
                
                        double er;
                        double fx;
                        for (int i = 0; i <= LP.Count-3; i++)
                        {
                            er = System.Math.Sqrt((LP[i].Y - LP[i + 1].Y) * (LP[i].Y - LP[i + 1].Y) + (LP[i].X - LP[i + 1].X) * (LP[i].X - LP[i + 1].X));
                            er = er + System.Math.Sqrt((LP[i + 1].Y - LP[i + 2].Y) * (LP[i + 1].Y - LP[i + 2].Y) + (LP[i + 1].X - LP[i + 2].X) * (LP[i + 1].X - LP[i + 2].X));
                            fx = System.Math.Sqrt((LP[i].Y - LP[i + 2].Y) * (LP[i].Y - LP[i + 2].Y) + (LP[i].X - LP[i + 2].X) * (LP[i].X - LP[i + 2].X));
                            if (er != fx)
                            {
                                listBox1.Items.Add("Угол в точке " + LP[i + 1]);
                            }
 
                        }
                        
                    }
на изображении http://saveimg.ru/pictures/01-... 803114.bmp
Выдаёт много углов но никак ни 3

Добавлено через 7 минут
Контур после "Жука" получается таким:
http://saveimg.ru/pictures/01-... 7b182b.bmp

Добавлено через 35 секунд
Вот мне именно по этому контуру и надо определить кол-во углов!
0
54 / 29 / 7
Регистрация: 28.02.2011
Сообщений: 105
01.12.2011, 14:06
в своем примере - для простоты я продублировал 2 раза - первые 2 точки (это видно из объявления значений) - так как нам нужно чтоб по середине (точка которую проверяем) - были обязательно все точки. может здесь вы ошибку допускаете?
скопируйте мой код - проверьте - всё работает корректно. все точки также проверил еще разок...
1
7 / 7 / 1
Регистрация: 28.03.2010
Сообщений: 99
01.12.2011, 14:10  [ТС]
Даже при добавлении 2 первых точек в конец массива точек, результат неверный!
Цитата Сообщение от kazachok Посмотреть сообщение
1 1 1 0 0 0
1 0 1 1 0 0
1 0 0 1 1 0
1 0 0 0 1 0
1 0 0 0 0 1
0 1 1 1 1 1
Да на данном примере всё работает, но это был лишь примерный кусок окунтуривания(я не мог писать матрицу пикслей для изображения 200х150 )... в реале контур получается таким

и на этом, данный алгоритм не работает!
0
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
01.12.2011, 14:44
С такими условиями читайте про нейронные сети, да и для начала вбейте в гугл "распознавание геометрических фигур"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2011, 14:44
Помогаю со студенческими работами здесь

Код вычисления углов прямоугольного триугольника
Кто нибудь скиньте код вычисления углов прямоугольного триугольника где известны все три стороны триугольника. Там наверное cos и sin не...

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

Закругление углов формы с помощью изображения
Привет всем! Кто может дать код, или объяснить как сделать закругление? Нужно получить: Что получается у меня:

Поиск точного изображения в изображении с выводом координат углов
Есть допустим изображения экрана, на нем хочется найти 2 изображения и получить координаты его угловых точек. Как получить изображения с...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru