![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| YURIC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 5.8.2003 Репутация: нет Всего: 1 |
Здраствуйте,
помогите решить такую задачку: Исходные данные: у меня есть координаты вектора (X1,Y1,X2,Y2), так-же известна некоторая точка на этом векторе(X3,Y3), и длина (n). Вопрос: как построить два вектора длинной n под углом 45 и 90 градусов относительно исходного из точки X3,Y3. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
1. сдвигаем вектор так, чтобы начало было в x3,y3
2. поворачиваем его на нужный угол 3. делаем нужную длину поворот можно делать с помощью умножения на матрицу: cos alpha sin alpha -sin alpha cos alpha -------------------- qqq |
|||
|
||||
| YURIC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 5.8.2003 Репутация: нет Всего: 1 |
maxim1000
пожалуйста... |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
только все же лучше оперировать обычными векторами с двумя координатами, т.е. разностями...
а то, что с двумя точками - это отрезки... Добавлено @ 17:46 то, что в условии назовем отрезками, чтобы не путаться делаем вектор: x=x2-x1 y=y2-y1 поворачиваем его, например на 45 градусов x'=x*cos 45+y*sin 45 y'=x*(-sin 45)+y*cos 45 и рисуем отрезок от (x3,y3) до (x3+x',y3+y') -------------------- qqq |
|||
|
||||
| YURIC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 5.8.2003 Репутация: нет Всего: 1 |
Спасибо
|
|||
|
||||
| YURIC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 5.8.2003 Репутация: нет Всего: 1 |
а где учитывается длина (n)?
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
а... забыл
L=sqrt(x'*x'+y'*y') x''=x'*n/L y''=y'*n/L и использовать потом вместо x' и y' x'' и y'' -------------------- qqq |
|||
|
||||
| YURIC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 5.8.2003 Репутация: нет Всего: 1 |
very senks!!!
|
|||
|
||||
| YURIC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 5.8.2003 Репутация: нет Всего: 1 |
Блин, еще чуть чуть подскажите,
если у меня нет точки X3,Y3, а линию нужно строить из точки X2,Y, что поменяется в расчете? пробовал подставить вместо X3,Y3 X2,Y2 ничего не получается, линии строятся но не под нужным углом |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
а... неправильно прочитал
подумал, что x3,y3 находится на исходном отрезке... тут немного сложнее... надо найти точку на отрезке, откуда и строить новый хотя, на самом деле, это не очень сложно эта точка находится на пересечении двух прямых, которые содержат эти отрезки (исходный и повернутый) записываем уравнения этих прямых и рашаем систему из них Это сообщение отредактировал(а) maxim1000 - 3.11.2005, 22:25 -------------------- qqq |
|||
|
||||
| YURIC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 5.8.2003 Репутация: нет Всего: 1 |
вот как звучит задача сейчас:
есть отрезок X1,Y1,X2,Y2 из точки X2,Y2 нужно опустить перпендикуляр (или другой отрезок на угол alpha) длиной n помоги плз примером расчета... З.Ы. Надо начинать учить геометрию...... |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
ну так подставь во все мои формулы вместо x3,y3 x2,y2 и все... для 90 градусов все должно работать для других углов будет небольшая непонятность: угол будет отсчитываться между направлениями прямых т.е. если продолжить отрезок дальше, чем x2,y2, то будет как раз угол между продолжением и построенным отрезком а если хочется, чтобы нужный угол отсчитывался от исходной части отрезка, то надо в формулы подставить 180-alpha -------------------- qqq |
|||
|
||||
| YURIC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 5.8.2003 Репутация: нет Всего: 1 |
если я правильно понял
x'=x*(180-cos 45)+y*(180-sin 45) y'=x*(180-sin 45)+y*(180-cos 45) блин только не закидывай тухлыми помидорам.... так? Добавлено @ 22:40 или x'=x*(cos180- 45)+y*(sin 180-45) y'=x*(sin 180-45)+y*(cos180- 45) |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
второе...
-------------------- qqq |
|||
|
||||
| YURIC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 5.8.2003 Репутация: нет Всего: 1 |
по идее если я строю два отрезка с углом 90 и 270 градусов они должны быть оба перпендикулярны исходному отрезку, правильно? только расположены в разных направлениях (грубо говоря один направлен на юг, другой на север, если исходный отрезок идет с запада на восток), но так у меня почему-то не получается
в чем траблы? Добавлено @ 22:52 я пробовал и второе |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
тогда три вопроса:
1. в радианы переводишь? 2. если не получается праильно, то как получается (под какими приблизительно углами)? 3. код программы... -------------------- qqq |
|||
|
||||
| YURIC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 5.8.2003 Репутация: нет Всего: 1 |
Это сообщение отредактировал(а) YURIC - 3.11.2005, 23:39 Присоединённый файл ( Кол-во скачиваний: 5 )
Nado.JPG 5,47 Kb |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
все стандатные тригонометрические функции оперируют углами не в гардусах, а в радианах
так что надо все углы (в том числе и 180) перевести в радианы: radians=pi*alpha/180 (не помню точно, как число пи называется в Delphi) -------------------- qqq |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |