Как зная координаты линии построить вторую линию по углом..

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Как зная координаты линии построить вторую линию по углом..

Сообщение TiG » 23.03.2005 (Ср) 11:46

Есть Line1 с координатами 50,50 100,100.
Как постороить Line2, чтобы она была смежна с line1 под углом 77 градусов?
Все мои игрушки мама разметало ураганом...

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 23.03.2005 (Ср) 12:27

Пускай у Line выделены начало и конец. Тогда, если X1 и Y1 - координаты вектора с началом в начале и концом в конце (коряво, правда?), то координаты точно такого же по длине вектора, составляющего угол Alpha с данным вектором, равны:
X2=X1 * Cos(Alpha) + Y1 * Sin(Alpha)
Y2=Y1 * Cos(Alpha) - X1 * Sin(Alpha)
Это при условии, что вектор поворачивается на угол Alpha по часовой стрелке.
Листинги не горят!

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 23.03.2005 (Ср) 12:53

Сеньк)
Плиз расшифруй):

Line?.X2=Line?.X1 * Cos(Alpha) + Line?.Y1 * Sin(Alpha)
Line?.Y2=Line?.Y1 * Cos(Alpha) - Line?.X1 * Sin(Alpha)

так?:

Line2.X2=Line2.X1 * Cos(Alpha) + Line2.Y1 * Sin(Alpha)
Line2.Y2=Line2.Y1 * Cos(Alpha) - Line2.X1 * Sin(Alpha)
Все мои игрушки мама разметало ураганом...

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 23.03.2005 (Ср) 15:34

Dim x
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
x = x + 5
Text1.Text = x
Line2.X1 = Line1.X2
Line2.Y1 = Line1.Y2
Line2.X2 = Line1.X1 * Cos(3.14159265358979 / 180 * x) + (Line1.Y1 * Sin(3.14159265358979 / 180 * x))
Line2.Y2 = Line1.Y1 * Cos(3.14159265358979 / 180 * x) - (Line1.X1 * Sin(3.14159265358979 / 180 * x))
End Sub

Короче после 45 градусов начинается ересь, до 45 с длинной непонятки.
Все мои игрушки мама разметало ураганом...

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 24.03.2005 (Чт) 11:33

Под (X1,Y1) и (X2,Y2) в понимались координаты двух векторов, а не начала и конца какого-то одного вектора. Моя вина - я выбрал обозначения, использованные в Line. Нужный тебе код будет выглядеть следующим образом:
Код: Выделить всё

'начало Line2 помещайте, куда вам понадобиться
Line2.X2=Line2.X1+(Line1.X2-Line1.X1)*Cos(alpha)+(Line1.Y2-Line1.Y1)*Sin(alpha)
Line2.Y2=Line2.Y1+(Line1.Y2-Line1.Y1)*Cos(alpha)-(Line1.X2-Line1.X1)*Sin(alpha)
Листинги не горят!

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 24.03.2005 (Чт) 14:51

Сеньк) Терь пашет!
Все мои игрушки мама разметало ураганом...


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

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

Сейчас этот форум просматривают: Google-бот и гости: 63

    TopList