1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Можно ли сделать это при помощи запоса Sql?

Тема в разделе "Базы данных и администрирование", создана пользователем TT., 8 сен 2006.

Статус темы:
Закрыта.
  1. TT.

    TT. Гость

    Репутация:
    0
    Таблица 1.
    ----------------
    | ID | .... |
    ----------------
    | 1 | .... |
    ----------------

    Таблица 2.
    -------------------------------------------------------------------
    | ID | X | Y | PointNum (порядковый номер точки) |
    -------------------------------------------------------------------
    | 1 | 10 | 10 | 0 |
    | 1 | 10 | 20 | 1 |
    | 1 | 20 | 20 | 2 |
    | 1 | 20 | 10 | 3 |
    --------------------------

    Вывел формулу попадания случайной точки в многоугольник.

    min(y2,y1)+|(y1-y2)/(x2-x0)|>=y0 - если вот таких совподений четное колличество, тогда случайная точка попадает в многоугольник

    (x0, y0) - это координаты случайной точки
    (x1, y1) - это координаты начала одного из отрезков многоугольника
    (x2, y2) - это координатыконца одного из отрезков многоугольника

    Например для объекта 1:
    (10, 10) - (10, 20) первый отрезок
    (10, 20) - (20, 20) второй отрезок
    (20, 20) - (20, 10) третий отрезок
    (20, 10) - (10, 10) четвертый отрезок

    Проблемма в том что надо подставлять в формулу значения 2-х строк одной таблицы.
     
  2. TT.

    TT. Гость

    Репутация:
    0
    Первая таблица называется objects вторая poligons

    Код:
    select objects.id from objects where 
    MOD(
    (
    select count(*) from poligons as p1 where (p1.id=objects.id and
    LEAST(p1.X,(select X from poligons as p2 where p2.id=p1.id and p2.PointNum=p1.PointNum+1))<=30 and
    GREATEST(p1.X,(select X from poligons as p2 where p2.id=p1.id and p2.PointNum=p1.PointNum+1))>=30 and 
    p1.PointNum+1<(select count(*) from poligons where id=p1.id) and
    LEAST(p1.Y,(select Y from poligons as p2 where p2.id=p1.id and p2.PointNum=p1.PointNum+1))+
    ABS(
    (p1.Y-(select Y from poligons as p2 where p2.id=p1.id and p2.PointNum=p1.PointNum+1))
    /
    ((select X from poligons as p2 where p2.id=p1.id and p2.PointNum=p1.PointNum+1)-30))>=15)or
    (p1.id=objects.id and
    LEAST(p1.X,(select X from poligons as p2 where p2.id=p1.id and p2.PointNum=0))<=30 and
    GREATEST(p1.X,(select X from poligons as p2 where p2.id=p1.id and p2.PointNum=0))>=30 and 
    p1.PointNum+1=(select count(*) from poligons where id=p1.id) and
    LEAST(p1.Y,(select Y from poligons as p2 where p2.id=p1.id and p2.PointNum=0))+
    ABS(
    (p1.Y-(select Y from poligons as p2 where p2.id=p1.id and p2.PointNum=0))
    /
    ((select X from poligons as p2 where p2.id=p1.id and p2.PointNum=0)-30))>=15)
    ),2)=1
    
    group by objects.id
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей