Тема: 2d сетка
Показать сообщение отдельно
Старый 24.10.2012, 23:33   #10
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: 2d сетка

Сообщение от MoKa Посмотреть сообщение
Реализуй простую сетку без перспективы. А затем x координату для отрисовки линий и вычисления ячейки на которую наводишь умножай на коэффициент перспективы который зависит от Y.
Готово.
Вот что значит правильная идея(подход) ,пара минут и готово решение .
Выкладываю то , что получилось
код:
Graphics 800,600
SetBuffer BackBuffer() 
TileSizeX = 40
TileSizeY = 30
fov# = 50
While Not KeyHit(1) 
Cls 
mx# = MouseX() : my# = MouseY()

	For y = 1 To 11
		For x = -5 To 5
			ScaleRatio# = fov/(fov+y)
			px# = x*TileSizeX/ScaleRatio
			py# = y*TileSizeY
			
			If x<5 Then Line 400+px , py ,400+ ((x+1)*TileSizeX/ScaleRatio) , py
			If y<11 Then Line 400+px , py ,400+ ((x)*TileSizeX/(fov/(fov+(y+1)))) , (y+1)*TileSizeY
	;		Plot 400+px , py
		Next
	Next 	
	
	ym# = Floor#(my/TileSizeY)
	xm# = Floor#((  (mx-400)/ TileSizeX*( (fov/(fov+ym)))+6 ))
	
	If xm<11 And xm >0 And ym <11 And ym >0 
		Text mx,my-10,Int(xm)+" : "+Int(ym)
	End If 
		Text 20,40,"X : "+Int(xm)
		Text 20,60,"Y : "+Int(ym)	
Flip 
Wend 
End
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо polopok за это полезное сообщение:
LLI.T.A.L.K.E.R. (25.10.2012), moka (25.10.2012)