Работа с Углами

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
STanli
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 163
Зарегистрирован: 31.05.2004 (Пн) 15:22
Откуда: ТОМСК

Работа с Углами

Сообщение STanli » 13.02.2005 (Вс) 1:45

Люди, помогите, вот например есть две линии, т.е у каждой по две точки, и как определить угол между ними, чё то не допирает =(
Раз, два, три, четыре, пять, с детства с рифмой я дружу.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.02.2005 (Вс) 1:56

А что непонятного?
Составляешь каноническое уравнение прямой для каждой из линий, арктангенс коэффициента линии будет угол. Разница углов будет угол между линиями.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.02.2005 (Вс) 1:58

Пусть одна прямая проходит через (Ax, Ay) и (Bx, By), другая - через (Cx, Cy) и (Dx, Dy).

Тогда угол равен Atn((By - Ay)/(Bx - Ax)) - Atn((Dy - Cy)/(Dx - Cx))
Изображение

STanli
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 163
Зарегистрирован: 31.05.2004 (Пн) 15:22
Откуда: ТОМСК

Сообщение STanli » 13.02.2005 (Вс) 2:02

Спасиба, гляну как и чё, ща Basic не прёт =)
Раз, два, три, четыре, пять, с детства с рифмой я дружу.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.02.2005 (Вс) 2:02

2alibek: афаик "каноническим" принято называть уравнение вида Ax + By + C = 0. В нём нет "коэффициента линии".
Изображение

STanli
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 163
Зарегистрирован: 31.05.2004 (Пн) 15:22
Откуда: ТОМСК

Сообщение STanli » 13.02.2005 (Вс) 2:04

Ну типа спасиба просветили, про канонический первый раз слышу =)
Раз, два, три, четыре, пять, с детства с рифмой я дружу.

Qubicz
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 16.10.2004 (Сб) 20:21
Откуда: Санкт-Петербург

Сообщение Qubicz » 13.02.2005 (Вс) 6:21

Изображение
Вот оно какое, где l,m,n координаты направляющего вектора
тута

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 13.02.2005 (Вс) 10:41

tyomitch, имхо каноническое - уравнение вида y=kx+b, где k - угловой коэффициент (коэффициент линии а-ля Alibek?)

k - тангенс угла наклона α, так что α = arctg(k)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.02.2005 (Вс) 13:32

y=kx+b - это линейная функция. Это не то же, что уравнение прямой: например, вертикальной линии не соответствует линейная функция, и значит не соответствует никакое k.
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.02.2005 (Вс) 19:06

tyomitch, разве?
Я точно не помню, но твой вариант это (ИМХО) параметрическое. А каноническое - вида y=f(x)
Lasciate ogni speranza, voi ch'entrate.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 13.02.2005 (Вс) 19:18

Параметрическое задание имеет вид:

Гx=f(k)
Ly=f(k)

,а вертикальной линии соответствует уравнение x=0

Кстати, tyomitch. Проверь сам. Твоё уравнение имеет вид,
Код: Выделить всё
Ay+Bx+C=0

моё -
Код: Выделить всё
y=kx+b


Преобразуем твоё выражение:
1) By=C-Ax
2) y=C/B-(A/B)x

Отсюда k=-A/B и b=C/B.
Мы написали одно и тоже, вся разница в "термина*"

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.02.2005 (Вс) 20:12

Лихо ты... А если B=0? ;-)
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 13.02.2005 (Вс) 20:15

...то меняем y(x) на x(y) :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.02.2005 (Вс) 21:29

Ну уж нет ;-)
Признай, что уравнение y=kx+b неспособно описать вертикальные линии, потому что так оно и есть :-)

"линейная функция" != "уравнение прямой" хотя бы уже потому, что одна - функция, а другое - уравнение :-D
"y=kx+b" - не уравнение прямой, по указанной в начале поста причине.
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 13.02.2005 (Вс) 21:37

Признаю, упорствовать дальше бесполезно :)
Пойду дальше разбираться с контроллером, раз вы все такие злые :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 165

    TopList