Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Координаты

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Пожелания и предложения
Предыдущая тема :: Следующая тема  
Автор Сообщение
Андрей



Зарегистрирован: 18.04.2005
Сообщения: 47
Откуда: г. Калуга

СообщениеДобавлено: Чт 14 Июл 2005 15:51    Заголовок сообщения: Координаты Ответить с цитатой

Включаем режим редактирования контура копируем точки в буфер обмена, создаем каталог координат… ну и сюрприз… точки идут против часовой стрелки… Sad Да хитро… Видимо это новая система отображения координат. Smile Плохо тока, что в нашей области нигде этого не понимают, требуют чтоб все было по часовой стрелке инструкция говорят... Sad Вот и кручу их сейчас в «Экселе» пока безуспешно. Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Михаил Власов



Зарегистрирован: 14.02.2005
Сообщения: 580
Откуда: ИНТЕГРО

СообщениеДобавлено: Чт 14 Июл 2005 21:10    Заголовок сообщения: Ответить с цитатой

В ИнГео координаты контура хранятся в той последовательности, в которой они вводились, независимо от того, был ли создан объект интерактивно оператором или программно.
Соответственно, в буфер обмена точки помещаются в том порядке, в котором они следуют в контуре объекта.
Если Вам необходимо получить список координат в порядке обхода контура по часовой стрелке, Вы можете воспользоваться следующим нехитрым скриптом:
Код:

' Coords - массив координат вида: Array(Array(x1,y1),Array(x2,y2),...)
sub EnsureClockwiseOrder(Coords)
  dim i, j, prevI, square, x1, y1, x2, y2, temp
  square = 0
  for i = 0 to UBound(Coords)
    if i = 0 then j = UBound(Coords) else j = i - 1
    x1 = Coords(j)(0) : y1 = Coords(j)(1)
    x2 = Coords(i)(0) : y2 = Coords(i)(1)
    square = square + (x2 - x1)*(y2 + y1)/2
  next
  if square > 0 then
    i = 0
    j = UBound(Coords)
    do while i < j
      temp = Coords(i)
      Coords(i) = Coords(j)
      Coords(j) = temp
      i = i + 1
      j = j - 1
    loop
  end if
end sub

_________________
С уважением, Михаил Власов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Пожелания и предложения Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB