Разделить треугольник на 2

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

Разделить треугольник на 2

Сообщение d3drm » 16.03.2005 (Ср) 19:08

Кто-нибудь подскажет алгоритм деления треугольника так, чтобы в рузельтате получить 2 треугольника с плоским дном и верхом?
ХЎ

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 16.03.2005 (Ср) 20:51

вот небольшая иллюстрация к тому, что мне нужно...
ХЎ

Морфий
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 119
Зарегистрирован: 11.01.2005 (Вт) 18:06

Сообщение Морфий » 16.03.2005 (Ср) 21:30

задай функцией прямую (p0;p1) и прямую (p2;x) — горизонтальная и ищи точку пересечения, чтобы определить координаты точки x.
Вот оно — счастье...

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 16.03.2005 (Ср) 22:00

ты хоть сам понял что сказал? :shock:
ХЎ

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 16.03.2005 (Ср) 22:49

из этого найдешь прямую (р0,р1)
р0.y=k*р0.X+b
р1.y=k*р1.X+b

прямая (р2,х)
далжна быть такой наверно
y=p2.y
следовательно надо прямую (ее уравнение) (р0,р1) приравнять к р2.у

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 16.03.2005 (Ср) 23:33

Код: Выделить всё
(X  - X0)   (Y  - X0) 
--------- = ---------
(X1 - X0)   (Y1 - Y0)

         _П_
         \ /
          V

     (X1 - X0)*(Y  - Y0)
X =  -------------------
          (Y1 - Y0)

Y = Y2
Демонстрация: размести на форме НЕГОРИЗОНТАЛЬНЫЙ Line1, и копипасть код:
Код: Выделить всё
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Cls
With Line1
    MyX = (.X1 - .X2) * (Y - .Y2) / (.Y1 - .Y2) + .X2
Line (X, Y)-(.X1, .Y1)
Line (X, Y)-(.X2, .Y2)
If (Y >= .Y1 And Y <= .Y2) Or (Y <= .Y1 And Y >= .Y2) Then
    Line (X, Y)-(MyX, Y)
End If
End With
Circle (MyX, Y), 20, vbRed
End Sub
:roll:
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 17.03.2005 (Чт) 0:05

[quote="SHURUP"][code](X - X0) (Y - X0)
--------- = ---------
(X1 - X0) (Y1 - Y0)

_П_
\ /
V

(X1 - X0)*(Y - Y0)
X = -------------------
(Y1 - Y0)[/code]
Y = Y2
Демонстрация: размести на форме [color=red]НЕГОРИЗОНТАЛЬНЫЙ[/color] Line1, и копипасть код:
Код: Выделить всё
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Cls
With Line1
    MyX = (.X1 - .X2) * (Y - .Y2) / (.Y1 - .Y2) + .X2
Line (X, Y)-(.X1, .Y1)
Line (X, Y)-(.X2, .Y2)
If (Y >= .Y1 And Y <= .Y2) Or (Y <= .Y1 And Y >= .Y2) Then
    Line (X, Y)-(MyX, Y)
End If
End With
Circle (MyX, Y), 20, vbRed
End Sub
:roll:[/quote]


Спасибо =)

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 17.03.2005 (Чт) 0:06

[off]Почему компиляция bbcode не работает?[/off]

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.03.2005 (Чт) 2:35

Видать ты галку поставил - отключить в этом сообщении bbcode? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение Faust » 17.03.2005 (Чт) 19:34

Насколько я понял, эта тема является продолжением http://bbs.vbstreets.ru/viewtopic.php?t=14497. Я вот потупил над поставленным вопросом, и вот что придумал:
Вложения
Fill.rar
Заливка треугольника
(2.2 Кб) Скачиваний: 18
Листинги не горят!

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

Сообщение Faust » 17.03.2005 (Чт) 19:37

Это, правда, для целочисленных координат - речь ведь шла о массиве.
Листинги не горят!

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 18.03.2005 (Пт) 12:50

GSerg, все верно, только галку я не ставил, поетому и конфуз такой вышел.

Faust, код скачал из лички, как уже говорил, чуть позже подробнее напишу, что об этому думаю. А может и не напишу, все мои старания выходят на смарку - делал динамические тени в DX, но DX подыхает на редактировании текстур, причем бузбожно - умирает уже при зоздании 10 текстур 64х64, так что никакая оптимизация тут уже не поможет :cry:


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

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

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

    TopList