ПрограммированиеФорум2D графика и изометрия

Isometric and Hexagon (4 стр)

Страницы: 1 2 3 4
#45
6:59, 17 дек 2010

это я понял. у меня все работает.Проблема в другом: в примере с шестиугольниками сетка рисуется и считается в кординате 0,0 .А мне нужно ее сместить.Напимер в центр экрана.В какую строчку добавить коэфициент смещения? Куда только не пробыва не работает.

#46
8:46, 18 дек 2010

Ни кто не поможет?Может из-за оператора Int, как он должен в данной ситуации работать в какую сторону округлять?
вот справка по моему Int-у. 

Int конвертирует дробное, приравнивая его к ближайшему целому числу.
ПОМНИТЕ: Это не традиционное значение Int в Basic.

Как насчет чисел, которые на одинаковом отдалении между целыми?
Округляется к ближайшему четному целому:

Int( 2.5 ) ... дает 2
Int( 3.5 ) ... дает 4
Скорее всего проблема из-за этого.

#47
11:02, 18 дек 2010

Jlemyp
"Int в Basic" приравнивает к меньшему целому, даже отрицательные значения. Поэтому в Basic без проблем работает при смещении координат в любом направлении.
int(-8.8)=-9
int(8.8)= 8
В бейсик варианте для смещения точки "0,0" код не нужно менять вообще. Достаточно сменить Scale параметры формы.

#48
13:24, 18 дек 2010

Mikle спасибо! Один вопрос решил у меня Int не так работал заменил на другой оператор. А вот про смещение не понял, какие Scale параметры формы? Ты имеешь ввиду масштаб ячеек? Я хочу что-бы сетка рисовалась допустим в правом нижнем углу экрана,а не навесь экран.

#49
14:50, 18 дек 2010

Jlemyp
> не понял, какие Scale параметры формы
В бейсике можно задать форме свойства: ScaleTop, ScaleHeight, ScaleLeft, ScaleWidth. Названия говорят сами за себя. После этого все ф-ции, возвращающие координаты (типа MouseMove) и все использующие координаты-параметры (типа Pset, Line, Move) будут использовать эту систему координат. Перевод автоматический.

Прошло более 3 лет
#50
16:39, 12 фев 2014

долго искал.. нашёл адекватный код... на с++ тайл можно найти в staggered isometric map

Vector2 vPos = vMousePos;
float x  = floorf( ( vPos.x + ( vPos.y - m_fHeightSegment / 2.f ) * 2.f ) / m_fWidthSegment  );
float y  = floorf( ( vPos.y - ( vPos.x - m_fWidthSegment  / 2.f ) / 2.f ) / m_fHeightSegment );
int   tx = static_cast< int >( floorf( ( x - y ) / 2.f ) );
int   ty = static_cast< int >( y + x );
Прошло более 1 года
#51
14:16, 22 июня 2015

ещё по теме http://forum.thegamecreators.com/?m=forum_view&t=194515&b=7

#52
12:14, 20 ноя 2015

gary_cho, спасибо за код


staggered isometric map на VB6

Dim GrilleU As Integer 'x
Dim GrilleV As Integer 'y
Dim ISO_HEIGHT As Integer
Dim ISO_WIDTH As Integer

ISO_WIDTH = 46
ISO_HEIGHT = 24

UX = Int((X + (Y - ISO_HEIGHT / 2) * 2) / ISO_WIDTH)
VY = Int((Y - (X - ISO_WIDTH / 2) / 2) / ISO_HEIGHT)

GrilleU = Int((UX - VY) / 2)
GrilleV = VY + UX

'X0 = GrilleU * ISO_WIDTH + (GrilleV Mod 2) * (ISO_WIDTH / 2)
'Y0 = GrilleV * (ISO_HEIGHT / 2)

CenterX = GrilleU * ISO_WIDTH + (GrilleV Mod 2) * (ISO_WIDTH / 2) + (ISO_WIDTH / 2)
CenterY = GrilleV * (ISO_HEIGHT / 2) + (ISO_HEIGHT / 2)

Текст1.Text = GrilleU & " (" & UX & ")"
Текст2.Text = GrilleV & " (" & VY & ")"
Текст3.Text = X
Текст4.Text = Y
Текст5.Text = CenterX
Текст6.Text = CenterY
#53
14:07, 20 ноя 2015

Смотрю http://www.redblobgames.com/grids/hexagons/ в треде ещё не упоминали.
Теперь я упомянул.

Хронология темы меня радует чем-то.

Страницы: 1 2 3 4
ПрограммированиеФорум2D графика и изометрия

Тема в архиве.