Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение перпендикулярных и не только линий, помогите 
:(
    Опции темы
YURIC
Дата 3.11.2005, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



Здраствуйте,

помогите решить такую задачку:

Исходные данные: у меня есть координаты вектора (X1,Y1,X2,Y2), так-же известна некоторая точка на этом векторе(X3,Y3), и длина (n).

Вопрос:
как построить два вектора длинной n под углом 45 и 90 градусов относительно исходного из точки X3,Y3.


smile
PM MAIL   Вверх
maxim1000
Дата 3.11.2005, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 4
Всего: 110



1. сдвигаем вектор так, чтобы начало было в x3,y3
2. поворачиваем его на нужный угол
3. делаем нужную длину

поворот можно делать с помощью умножения на матрицу:
cos alpha sin alpha
-sin alpha cos alpha


--------------------
qqq
PM WWW   Вверх
YURIC
Дата 3.11.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



maxim1000

smile

пожалуйста...
PM MAIL   Вверх
maxim1000
Дата 3.11.2005, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 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
PM WWW   Вверх
YURIC
Дата 3.11.2005, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



Спасибо
PM MAIL   Вверх
YURIC
Дата 3.11.2005, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



а где учитывается длина (n)?

smile
PM MAIL   Вверх
maxim1000
Дата 3.11.2005, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 4
Всего: 110



а... забыл smile
L=sqrt(x'*x'+y'*y')
x''=x'*n/L
y''=y'*n/L
и использовать потом вместо x' и y' x'' и y''


--------------------
qqq
PM WWW   Вверх
YURIC
Дата 3.11.2005, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



very senks!!!
PM MAIL   Вверх
YURIC
Дата 3.11.2005, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



Блин, еще чуть чуть подскажите,

если у меня нет точки X3,Y3, а линию нужно строить из точки X2,Y, что поменяется в расчете?

пробовал подставить вместо X3,Y3 X2,Y2 ничего не получается, линии строятся но не под нужным углом smile
PM MAIL   Вверх
maxim1000
Дата 3.11.2005, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 4
Всего: 110



а... неправильно прочитал
подумал, что x3,y3 находится на исходном отрезке...
тут немного сложнее...
надо найти точку на отрезке, откуда и строить новый
хотя, на самом деле, это не очень сложно
эта точка находится на пересечении двух прямых, которые содержат эти отрезки (исходный и повернутый)
записываем уравнения этих прямых и рашаем систему из них

Это сообщение отредактировал(а) maxim1000 - 3.11.2005, 22:25


--------------------
qqq
PM WWW   Вверх
YURIC
Дата 3.11.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



вот как звучит задача сейчас:

есть отрезок X1,Y1,X2,Y2 из точки X2,Y2 нужно опустить перпендикуляр (или другой отрезок на угол alpha) длиной n

помоги плз примером расчета...

З.Ы. Надо начинать учить геометрию......
PM MAIL   Вверх
maxim1000
Дата 3.11.2005, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 4
Всего: 110



Цитата
есть отрезок X1,Y1,X2,Y2 из точки X2,Y2 нужно опустить перпендикуляр (или другой отрезок на угол alpha) длиной n

ну так подставь во все мои формулы вместо x3,y3 x2,y2 и все...
для 90 градусов все должно работать
для других углов будет небольшая непонятность:
угол будет отсчитываться между направлениями прямых
т.е. если продолжить отрезок дальше, чем x2,y2, то будет как раз угол между продолжением и построенным отрезком
а если хочется, чтобы нужный угол отсчитывался от исходной части отрезка, то надо в формулы подставить 180-alpha


--------------------
qqq
PM WWW   Вверх
YURIC
Дата 3.11.2005, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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)

smile
PM MAIL   Вверх
maxim1000
Дата 3.11.2005, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 4
Всего: 110



второе...



--------------------
qqq
PM WWW   Вверх
YURIC
Дата 3.11.2005, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 5.8.2003

Репутация: нет
Всего: 1



по идее если я строю два отрезка с углом 90 и 270 градусов они должны быть оба перпендикулярны исходному отрезку, правильно? только расположены в разных направлениях (грубо говоря один направлен на юг, другой на север, если исходный отрезок идет с запада на восток), но так у меня почему-то не получается smile , и если я ставлю 180 и если не ставлю 180 smile smile smile

в чем траблы?
Добавлено @ 22:52
я пробовал и второе
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.