На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА
В этом разделе решаются вопросы, касающиеся векторной/растровой графики, а также 3D-редакторов.
Вопросы по программированию графики (работу с графическими форматами, распознавание изображений и т.д.) - просьба создавать в разделе Программирование графики.

Обучающие материалы: PhotoShop, PhotoPaint, ... растровая графика, Corel DRAW, Illustrator, ... векторная графика, 3D графика, 3D-анимация
Модераторы: Tri Repetae, Serafim
  
> 2D редактор, определение объекта
    Всем привет и с Новым годом. Вообщем вопрос таков:
    Допустим есть
    ExpandedWrap disabled
      class TObject
      {
       TList<Point>Points;
       //Координаты центра фигуры
       int mx,my;
      }

    Объект который состоит из вершин. Подскажите пожалуйста примерно оптимальный способ определения что
    при MouseDown(x,y) на области рисования я выберу эту фигуру.
    Спасибо.
    Сообщение отредактировано: dufifa -
      Важны не только вершины, но и ребра.
        Вот области которые принимает CprelDraw за выделение объекта, составленный из Безье
        user posted image
        user posted image
        Сообщение отредактировано: dufifa -
          Цитата dufifa @
          Допустим есть
          Допустим, в векторной графике объекты могут быть
          - точечные;
          - векторные (объекты из двух точек);
          - линейные (замкнутые и незамкнутые, незамкнутые составные);
          - площадные (с дырками и без дырок, многоконтурные (опять же с дырками и без них));
          - подписи (всякие...).
          Проще всего ловить площадные объекты - точка внутри полигона или нет. Определяется количеством пересечений вектора от этой точки до точки ВНЕ рамки исследуемого полигона с векторами, образующими этот полигон (и его дырки). Если количество пересечений НЕчётное, то точка в полигоне.
          Для остальных надо брать некоторую область поиска (условно +- 2 пиксела около точки жмаканья мышой) и проверять либо попадание точки (вершины) в этот ректангл, либо пересечение векторов объекта со сторонами этого ректангла.
            В TObject ввел абстрактную процедуру Selectit которая будет разная для всех фигур. Пока хорошо получилось только для линии и прямоугольника. :lol:
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0280 ]   [ 15 queries used ]   [ Generated: 27.04.24, 20:00 GMT ]