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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.09.2013, 15:05
KumoKairo вне форума Посмотреть профиль Отправить личное сообщение для KumoKairo Найти все сообщения от KumoKairo
  № 21  
Ответить с цитированием
KumoKairo
 
Аватар для KumoKairo

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Цитата:
Вектор имеет точное расположение в пространстве. Если вы в любом пространстве нарисуете вектор по длине и направлению, то вы, наверное, телепат.
Еще из школьных и вузовских курсов помню, что не имеет никакого значения где рисовать вектор. Если в расчет берется плоскость, то два сонаправленных вектора с одинаковой длиной считаются равными. То есть:
Цитата:
Два вектора называются равными, если они совмещаются параллельным переносом.
Название: 1.jpg
Просмотров: 1265

Размер: 6.2 Кб
В данном случае у двух векторов положение в пространстве разное, но они равны и взаимозаменяемы.
Поэтому для рисования вектора никаких телепатических навыков не требуется.

По этой же причине в разработке часто используются структуры (или классы) Point и Vector3, которые могут задавать и точку и вектор. В случае, если наш Point используется для задания точки - это положение в пространстве. Если Point используется для задания направления и величины вектора, считается, что он выходит из точки (0, 0), поскольку (еще раз) вектор не предполагает хранение положения в пространстве.
Для задания вектора с начальной точкой используются структуры, состоящие из двух Point или двух Vector3. В этом случае первый Point в структуре обозначает начальную точку, а второй Point - направление и длину.

Старый 03.09.2013, 16:14
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 22  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
я вчера много о векторах читал и там ясно написано было - вектор это не A(10,15) B(3,6), а ab(3-10,6-15)
ab(-7,9) и если его разложить по базису, то не важно где в пространстве он будет разложен, он будет все тем же вектором.

Старый 03.09.2013, 17:35
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 23  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Как найти координаты точки D, когда известно всё на рисунке ?
я второй день не могу это понять) Перечитал всё, на что хватило знаний, но видно их так мало...
я знаю как найти эту точку, но есть моменты, уравнение не работает. В нем не хватает чего то.
Изображения
 

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

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Код AS3:
//Задаем начальные точки
var pointA: Point = new Point(1, 1);
var pointB: Point = new Point(2, 1);
var pointC: Point = new Point(1, 2);
 
//Из точек сделаем два нормированных вектора
var normalizedB: Point = new Point(pointB.x - pointA.x, pointB.y - pointA.y);
var normalizedC: Point = new Point(pointC.x - pointA.x, pointC.y - pointA.y);
 
//Числитель формулы нахождения угла между векторами
var numerator: Number = normalizedB.x * normalizedC.x + normalizedB.y * normalizedC.y;
//Знаменатель формулы нахождения угла между векторами
var divisor: Number = Math.sqrt(normalizedB.x + normalizedB.y) * Math.sqrt(normalizedC.x + normalizedC.y);
//Половина угла между векторами
var angle: Number = Math.acos(numerator / divisor) / 2;
//Косинус и синус половины угла между векторами
var cosOmega: Number = Math.cos(angle);
var sinOmega: Number = Math.sin(angle);
//Нормированный вектор 0D
//Формула поворота вектора на заданный угол
var newPointNormalized: Point = new Point(normalizedB.x * cosOmega + normalizedB.y * sinOmega, normalizedB.x * sinOmega + normalizedB.y * cosOmega);
//Переносим нормированный вектор 0D в начальную точку A и получаем координату точки D
var pointD: Point = new Point(newPointNormalized.x + pointA.x, newPointNormalized.y + pointA.y);
Формулы:
Угол между векторами через скалярное произведение
Поворот вектора

Старый 03.09.2013, 18:01
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 25  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Вероятно надо переместить начало вектора в начало координат и с учетом смещений определить его координаты.

Старый 03.09.2013, 18:03
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 26  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Цитата:
Как найти координаты точки D, когда известно всё на рисунке ?
Если бы ACDB был треугольником, можно было бы вычислить.
А так непонятно где конкретно точка D находится, AD может тянуться сколько угодно и куда угодно.
__________________
Oomph

Старый 03.09.2013, 18:34
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 27  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
AD смахивает на повернутый AB или AC. Зная угол и начало координат можно определить проекции это и будут координаты.

Старый 03.09.2013, 18:35
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 28  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
KumoKairo Ваш код работает если векторы образуют прямой угол, а если угол будет не равен 90 градусам то значения x и y точки D возвращаются как NaN.Хочу поинтересоваться почему так?
Вложения
Тип файла: swf bisector.swf (1.2 Кб, 47 просмотров)

Старый 03.09.2013, 19:30
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 29  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
я вот как делаю:
Изображения
   

Старый 03.09.2013, 19:35
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 30  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Зная координаты точек АВС, нахожу длины сторон а,b,c. Потом нахожу углы - ВАС,АВС,ВСА. Далее зная радиус и половину угла, я нахожу длину гипотенузы AD. Затем я вычитаю радиус из гипотенузы и получаю вершину скругления, точку N. Далее я нахожу точки Е1 и Е2 как катеты треугольника. Но я не как не могу понять, как сделать направление или ввести в уравнение градусы которые поправляли бы угол в правильную сторону. Сейчас прочту всё что вы написали и потом дополню)

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

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

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


 


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


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