|
|
|||||
Цитата:
Цитата:
В данном случае у двух векторов положение в пространстве разное, но они равны и взаимозаменяемы. Поэтому для рисования вектора никаких телепатических навыков не требуется. По этой же причине в разработке часто используются структуры (или классы) Point и Vector3, которые могут задавать и точку и вектор. В случае, если наш Point используется для задания точки - это положение в пространстве. Если Point используется для задания направления и величины вектора, считается, что он выходит из точки (0, 0), поскольку (еще раз) вектор не предполагает хранение положения в пространстве. Для задания вектора с начальной точкой используются структуры, состоящие из двух Point или двух Vector3. В этом случае первый Point в структуре обозначает начальную точку, а второй Point - направление и длину. |
|
|||||
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) и если его разложить по базису, то не важно где в пространстве он будет разложен, он будет все тем же вектором. |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Как найти координаты точки D, когда известно всё на рисунке ?
я второй день не могу это понять) Перечитал всё, на что хватило знаний, но видно их так мало... я знаю как найти эту точку, но есть моменты, уравнение не работает. В нем не хватает чего то. |
|
|||||
//Задаем начальные точки 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); Угол между векторами через скалярное произведение Поворот вектора |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Вероятно надо переместить начало вектора в начало координат и с учетом смещений определить его координаты.
|
|
|||||
[+1 05.11.12]
Регистрация: Feb 2011
Сообщений: 431
|
Цитата:
А так непонятно где конкретно точка D находится, AD может тянуться сколько угодно и куда угодно.
__________________
Oomph |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
AD смахивает на повернутый AB или AC. Зная угол и начало координат можно определить проекции это и будут координаты.
|
|
|||||
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
KumoKairo Ваш код работает если векторы образуют прямой угол, а если угол будет не равен 90 градусам то значения x и y точки D возвращаются как NaN.Хочу поинтересоваться почему так?
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
я вот как делаю:
|
|
|||||
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. |
|
« Предыдущая тема | Следующая тема » |
|
|