Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8821
∙ повысить рейтинг »
CradleA
Статус: Бакалавр
Рейтинг: 2500
∙ повысить рейтинг »
Micren
Статус: Профессор
Рейтинг: 1875
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Microsoft .NET : C#

Номер выпуска:222
Дата выхода:25.12.2011, 16:00
Администратор рассылки:Alexey G. Gladenyuk (Управляющий)
Подписчиков / экспертов:144 / 58
Вопросов / ответов:1 / 2

Консультация # 184873: Здравствуйте! Прошу помощи в следующем вопросе: В системе координат X, Y заданы координаты вершин выпуклого многоугольника: массив координат X; массив координат Y; число вершин многоугольника и координаты произвольной точки Q, Z. Определить, принадлежит ли точка Q, Z многоугольнику. C# ...


Консультация # 184873:

Здравствуйте! Прошу помощи в следующем вопросе: В системе координат X, Y заданы координаты вершин выпуклого многоугольника: массив координат X; массив координат Y; число вершин многоугольника и координаты произвольной точки Q, Z. Определить, принадлежит ли точка Q, Z многоугольнику. C#

Дата отправки: 20.12.2011, 15:27
Вопрос задал: Иванов Евгений Александрович (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Andrew Kovalchuk (Профессионал):

Здравствуйте, Иванов Евгений Александрович!

Один из возможных способов решения этой задачи представлен ниже.

Код :
sing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static double[] X = new double[] {0, 2, 2, 0};
        static double[] Y = new double[] {0, 0, 2, 2};
        static int count;

        static double Qx, Qy, Zx, Zy;

        static double Snative = 0;
        static double Spieces = 0;

        static double e = 0.0001;

        static double Area3(double X1, double Y1, double X2, double Y2, double X3, double Y3) {
            double area = 0;
            double a, b, c, p;
            c = Math.Sqrt(Math.Pow(Y1 - Y2, 2) + Math.Pow(X1 - X2, 2));
            b = Math.Sqrt(Math.Pow(Y2 - Y3, 2) + Math.Pow(X2 - X3, 2));
            a = Math.Sqrt(Math.Pow(Y1 - Y3, 2) + Math.Pow(X1 - X3, 2));
            p = (a + b + c) / 2;
            area = Math.Sqrt(p * (p - a) * (p - b) * (p - c));
            return area;
        }

        static double ReadCoor(string str) {
            double result;
            Console.Write(str);
            result = double.Parse(Console.ReadLine());
            return result;
        }

        static void Sarea(double Ax, double Ay, string pname) {
            Spieces = Area3(Ax, Ay, X[0], Y[0], X[count - 1], Y[count - 1]);
            for (int i = 0; i < count - 1; i++) {
                Spieces += Area3(Ax, Ay, X[i], Y[i], X[i + 1], Y[i + 1]);
            }

            Console.WriteLine("Point {0} is {1}side", pname, ((Math.Abs(Snative - Spieces) < e) ? "in" : "out"));
        }


        static void Main(string[] args)
        {
            Console.WriteLine ("Enter coordinates of Q-point.");
            Qx = ReadCoor("X = ");
            Qy = ReadCoor("Y = ");

            Console.WriteLine("Enter coordinates of Z-point.");
            Zx = ReadCoor("X = ");
            Zy = ReadCoor("Y = ");

            count = X.Length;

            for (int i = 1; i < count-1; i++) {
                Snative += Area3(X[0], Y[0], X[i], Y[i], X[i + 1], Y[i + 1]);
            }

            Sarea(Qx, Qy, "Q");
            Sarea(Zx, Zy, "Z");

            Console.WriteLine("Done. Press any key...");
            Console.ReadKey(true);
        }
    }
}

Консультировал: Andrew Kovalchuk (Профессионал)
Дата отправки: 20.12.2011, 23:01
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует PsySex (Профессионал):

Здравствуйте, Иванов Евгений Александрович!
Мое решение выполнено в WindowsForms и показывает как решается данная задача возможностями самого языка, использованием класса System.Drawing.Drawing2D.GraphicsPath

Консультировал: PsySex (Профессионал)
Дата отправки: 22.12.2011, 11:59
Прикреплённый файл: посмотреть » [7.4 кб]
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное