Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.01.2010, 14:10
Zorro_13 вне форума Посмотреть профиль Отправить личное сообщение для Zorro_13 Найти все сообщения от Zorro_13
  № 1  
Ответить с цитированием
Zorro_13
 
Аватар для Zorro_13

Регистрация: Dec 2006
Сообщений: 140
Attention Как узнать направление Vector?

Рисуем с помощью Vector:
Код AS3:
public function DrawPathExample(){ 
 
    var square_commands:Vector.<int> = new Vector.<int>(5,true); 
    square_commands[0] = 1;//moveTo 
    square_commands[1] = 2;//lineTo 
    square_commands[2] = 2; 
    square_commands[3] = 2; 
    square_commands[4] = 2; 
 
    var square_coord:Vector.<Number> = new Vector.<Number>(10,true); 
    square_coord[0] = 20; //x 
    square_coord[1] = 10; //y 
    square_coord[2] = 50; 
    square_coord[3] = 10; 
    square_coord[4] = 50; 
    square_coord[5] = 40; 
    square_coord[6] = 20; 
    square_coord[7] = 40; 
    square_coord[8] = 20; 
    square_coord[9] = 10; 
 
    graphics.beginFill(0x442266);//set the color 
    graphics.drawPath(square_commands, square_coord); 
    }
Как узнать направление? (то есть по часовой всё время рисовали или против или и так и так)

Старый 13.01.2010, 23:02
Cos вне форума Посмотреть профиль Отправить личное сообщение для Cos Найти все сообщения от Cos
  № 2  
Ответить с цитированием
Cos

Регистрация: Jan 2009
Сообщений: 20
Если многоугольник выпуклый можно попробовать так.

Берем три соседние точки x1,y1, x2,y2, x3,y3. Дальше проверяем, чтобы вторая точка (x2,y2) лежала слева или на линии (x1,y1, x3,y3). И так в цикле перебираем все.

Старый 14.01.2010, 00:30
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 3  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Это мы узнаем по часовой или против? Или и так и так?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 14.01.2010, 17:42
Cos вне форума Посмотреть профиль Отправить личное сообщение для Cos Найти все сообщения от Cos
  № 4  
Ответить с цитированием
Cos

Регистрация: Jan 2009
Сообщений: 20
Предствьте линию. Если точка слева от направления этой линии, то очевидно, что по часовой.

Да, кстати, проверять лежит ли точка (x2,y2) НА линии (x1,y1, x3,y3) не надо, т.к. это бесмысленно. Зачем чертить отрезок тремя точками.

Старый 14.01.2010, 18:09
friendrix вне форума Посмотреть профиль Отправить личное сообщение для friendrix Найти все сообщения от friendrix
  № 5  
Ответить с цитированием
friendrix
 
Аватар для friendrix

Регистрация: Nov 2009
Адрес: SPb
Сообщений: 26
Цитата:
Сообщение от Cos Посмотреть сообщение
Если многоугольник выпуклый можно попробовать так.

Берем три соседние точки x1,y1, x2,y2, x3,y3. Дальше проверяем, чтобы вторая точка (x2,y2) лежала слева или на линии (x1,y1, x3,y3). И так в цикле перебираем все.
при таком подходе случай y1=y3 надо рассматривать отдельно

Старый 14.01.2010, 20:51
Cos вне форума Посмотреть профиль Отправить личное сообщение для Cos Найти все сообщения от Cos
  № 6  
Ответить с цитированием
Cos

Регистрация: Jan 2009
Сообщений: 20
С какого это перепугу?

Главное, чтобы точки не совпадали (иначе дополнительные проверки нужно будет писать) и ваш полигон был правильным.

Старый 15.01.2010, 11:24
friendrix вне форума Посмотреть профиль Отправить личное сообщение для friendrix Найти все сообщения от friendrix
  № 7  
Ответить с цитированием
friendrix
 
Аватар для friendrix

Регистрация: Nov 2009
Адрес: SPb
Сообщений: 26
Все, верно, прошу прощения

Старый 15.01.2010, 22:51
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 8  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Для выпкулого пногоугольника все гораздо проще:
1. Берем любые 3 точки, идущие подряд.
2. Условие по часовой=true, против=false:
(x1-x0)*(y2-y1) - (x2-x2)*(y1-y0) > 0
Для невыпуклого могут быть участки и по часовой и против, может их проссумировать как-то. Википедия в помощь

Старый 15.01.2010, 22:59
Cos вне форума Посмотреть профиль Отправить личное сообщение для Cos Найти все сообщения от Cos
  № 9  
Ответить с цитированием
Cos

Регистрация: Jan 2009
Сообщений: 20
Да действительно, цикл не нужен

Но это в том случае, если есть гарантия, что угольник правильный.

Старый 15.01.2010, 23:04
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 10  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Не "правильный" а "выпуклый"
Выбирай, не хочу:
http://www.google.ru/search?q=%D0%9E...client=firefox

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
Vector
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:10.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.