Помогите найти Y!

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

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

Сообщение GSerg » 03.12.2006 (Вс) 16:15

Приведённый в вопросе текст не имеет смысла.
Повторите попытку.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение GSerg » 03.12.2006 (Вс) 16:23

Любой паре точек (x,z) соответствует бесконечное количество точек y. Поэтому приведённый в вопросе текст не содержит смысла и требует больших уточнений.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение GSerg » 03.12.2006 (Вс) 17:01

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 03.12.2006 (Вс) 17:08

PHPFLASH
Надо интерполяцию делать! :wink:
#define ROFL 0xDDDD

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

Сообщение GSerg » 03.12.2006 (Вс) 17:18

А ты посмотри приведённый код. Его даже вообще не зная C легко понять.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение Bonesnapper » 05.12.2006 (Вт) 16:08

для ландшафта кратного 2 (32х32 64х64 ...)
Код: Выделить всё

Public Function GetHeight(x As Single, z As Single) As Single
Dim xx As Single, zz As Single, ix As Long, iz As Long
  xx = (x - Position.x) / ScaleXZ
  zz = (z - Position.z) / ScaleXZ
  ix = Int(xx)
  iz = Int(zz)
  xx = xx - ix
  zz = zz - iz
  If ix < 0& Or ix >= SizeXY - 1 Then GetHeight = 0: Exit Function
  If iz < 0& Or iz >= SizeXY - 1 Then GetHeight = 0: Exit Function

Dim val1 As Single
  If xx + zz < 1 Then
    val1 = vBuf(ix + SizeXY * iz + SizeXY).pos.y + vBuf(ix + 1 + SizeXY * iz).pos.y - vBuf(ix + SizeXY * iz).pos.y
    val1 = val1 * xx * zz + vBuf(ix + SizeXY * iz).pos.y * (1! - xx) * (1! - zz)
  Else
 
    val1 = vBuf(ix + SizeXY * iz + SizeXY).pos.y + vBuf(ix + 1 + SizeXY * iz).pos.y - vBuf(ix + SizeXY * iz + 1 + SizeXY).pos.y
    val1 = val1 * (1! - xx) * (1! - zz) + vBuf(ix + SizeXY * iz + 1 + SizeXY).pos.y * xx * zz
  End If
  val1 = val1 + vBuf(ix + 1 + SizeXY * iz).pos.y * xx * (1! - zz)
  val1 = val1 + vBuf(ix + SizeXY * iz + SizeXY).pos.y * (1! - xx) * zz

GetHeight = val1
End Function



Вернуться в Мультимедиа

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

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

    TopList