Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: OpenGL Добавлено: 02.09.09 09:05  

Автор вопроса:  portC | Web-сайт: feshin.info

Ответить

  Ответы Всего ответов: 36  

Номер ответа: 16
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #16
Добавлено: 03.09.09 10:16
(14) да, на нем родимом, собрал третью версию, там пости без глюков
думаю могут помось, только как их применить

Ответить

Номер ответа: 17
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #17
Добавлено: 03.09.09 12:56
сделал пародию на волну
она получается толщиной в три пикселя:
две кнопки
в одной
 im2 = Image.Load("ripples.gif";) 'загружаю картинку в массив чтобы работать с ним
  Wait 0.2
FTest.Picture = Picture["ripples.gif"] 'эту же картинку делаю фоном формы, чтобы на ней рисовать

код другой кнопки:
Public Sub Button2_Click()

'примерно по этому сценарию
' 1. делaется кaк-бы blur (т.е. сложение 4х точек вокруг текущей
' ( можно и больше))
' 2. полученное число, делим нa 2 (сдвигом)
' 3. выбирaем точку из тaкой-же позиции, но из 2го буферa
' 4. отнимaем п.3 от п.2 (считaть в словaх!)
' 5. смотрим, если результaт положительный, то переходим нa п.7
' 6. зaписывaем в 3ий бфер в текущую точку 0, и идём нa п.8
' 7. зaписывaем полученное знaчение в 3ий буфер в тек. точку
' 8. продолжaем делaть то-же сaмое, для следующих точек в буфере

Dim bu1, bu2, bu3, butmp As Integer 'три переменные с цветом
Dim xstart, ystart As Integer
Dim xst1, xst2, xst3 As Integer
Dim radius, t As Integer
xstart = 100 ' например начинаю с этих координат
ystart = 100

bu1 = im2[xstart, ystart]
bu2 = im2[xstart, ystart]
bu3 = im2[xstart, ystart]
'radius = 3

Draw.Begin(FTest)
For radius = 4 To 40
For t = 0 To 360
xst2 = xstart + (radius * (Sin(t * Pi / 180))) ' типа по кругу идти
yst2 = ystart + (radius * (Cos(t * Pi / 180)))

bu1 = (im2[xst2 + 1, yst2] + im2[xst2 - 1, yst2] + im2[xst2, yst2 + 1] + im2[xst2, yst2 - 1]) Div 2
'bu2 = im2[xst2, yst2] ' если раскомментировать, то подложка после прохождения остается без изменений
bu1 = bu2 - bu1
If bu1 > 0 Then
bu3 = 0
Else
bu3 = im2[xst2, yst2]
End If

xst1 = xstart + ((radius - 1) * (Sin(t * Pi / 180)))
yst1 = ystart + ((radius - 1) * (Cos(t * Pi / 180)))
xst3 = xstart + ((radius + 1) * (Sin(t * Pi / 180)))
yst3 = ystart + ((radius + 1) * (Cos(t * Pi / 180)))

' (1 - текущий, 2ой предыдущий, 3ий - в нём строится новaя кaртинкa)
'3 1 2
Draw.ForeColor = bu3
Draw.FillStyle = 1
Draw.Point(xst2, yst2)
Draw.ForeColor = bu1
Draw.FillStyle = 1
Draw.Point(xst1, yst1)
Draw.ForeColor = bu2
Draw.FillStyle = 1
Draw.Point(xst1, yst1)
Next
Next
Draw.End
End

'вот, только волна тонкая, как ее толще сделать

Ответить

Номер ответа: 18
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #18
Добавлено: 03.09.09 13:06
т.е. не хочу лишние переменные вводить, может как-то организовать цикл который будет проходить по толщине молны (например там, где blur)
блюр, например в цикле с определенной "толщиной волны"

Ответить

Номер ответа: 19
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #19 Добавлено: 03.09.09 20:48
Меня терзает смутное сомнение, что это неполучится сделать чисто на вб, без привлечения апи такие вещи обычно тормозят дико.
Легче воспроизвести анимированный гиф.
Кстати возможно у меня гдето завалялся такой, правда он небольшой 170х220х8.

Ответить

Номер ответа: 20
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #20
Добавлено: 03.09.09 21:07
кстати, красивее выглядит если
xst1 = xstart + ((radius - 2) * (Sin(t * Pi / 180)))
yst1 = ystart + ((radius - 2) * (Cos(t * Pi / 180)))
и строчку 'bu2 = im2[xst2, yst2] раскомментировать

получилось почти перевести на васек http://www.gamedev.ru/code/articles/?id=4205 (один мозговитый человек помог)
только волны идут не только от предметов, но и от краев рисунка
как избавиться - еще не знаю, плюс без затуханий волн

Ответить

Номер ответа: 21
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #21
Добавлено: 03.09.09 21:11
интересно дождаться rw12lq , он обещал к вечеру портировать
и
сравнить все три алгоритма
может доделать мой (сделать волну толще/выше)

Ответить

Номер ответа: 22
Автор ответа:
 rw12lq



Вопросов: 2
Ответов: 80
 Профиль | | #22 Добавлено: 03.09.09 23:37
только до своего компа дорвался... работа ненормированная.. вот еще примерчик поинтересней с изменением ширины волны:

http://planetsourcecode.com/vb/scripts/ShowZip.asp?lngWId=1&lngCodeId=23679&strZipAccessCode=tp%2FP236793926

на порт времени нет нефига....

Ответить

Номер ответа: 23
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #23
Добавлено: 03.09.09 23:51
а мой код смотрел?
волна интересная
может аськами махнемся?

Ответить

Номер ответа: 24
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #24
Добавлено: 03.09.09 23:53
по ссылке пусто

Ответить

Номер ответа: 25
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #25
Добавлено: 03.09.09 23:58
все, скачал
подскажи, как запустить этот код одновременно по разным координатам?
допустим я их по RND задаю
чтобы несколько кругов одновременно росли, а то одна волна - не интересно

Ответить

Номер ответа: 26
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #26
Добавлено: 04.09.09 00:06
кстати, пример супер, да и чем-то на мой код похож

Ответить

Номер ответа: 27
Автор ответа:
 rw12lq



Вопросов: 2
Ответов: 80
 Профиль | | #27 Добавлено: 04.09.09 00:09
вот замени... будет при нажатии мыши 10 капель...

  1. Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  2.  
  3. For i = 0 To 9
  4.     AddRipple CLng(x + CInt(Rnd * 100)), CLng(y + CInt(Rnd * 100))
  5. Next i
  6.  
  7. Timer1.Interval = 1
  8.  
  9. End Sub

Ответить

Номер ответа: 28
Автор ответа:
 rw12lq



Вопросов: 2
Ответов: 80
 Профиль | | #28 Добавлено: 04.09.09 00:12
ася: три-67-712-241, завтра вечером(04.09) стучи

Ответить

Номер ответа: 29
Автор ответа:
 portC



Вопросов: 14
Ответов: 101
 Web-сайт: feshin.info
 Профиль | | #29
Добавлено: 04.09.09 00:15
ок, спасибо, постучусь
есть ли разница, описано рисование волны у меня в sub или в модуле?
так не рисует ( у меня в Sub)

Ответить

Номер ответа: 30
Автор ответа:
 rw12lq



Вопросов: 2
Ответов: 80
 Профиль | | #30 Добавлено: 04.09.09 00:20
че-то не понял.. ты имеешь ввиду рандом задаешь в
  1. Sub AddRipple(x As Long, y As Long)
?

если да, то будет только одна "капля"...

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам