Теперь я пытаюсь создать прямые точки синхронизации на моем пути 2D-карты.
Другими словами, я хочу проливать расстояние между точкой А на карте, например, X: 301 Y: 679 до точки B X: 360 Y: 630, каждые 8 единиц пройденного расстояния.
Каждые 8 единиц измерения расстояния, рассчитанные на sqrt(pow(a_x - b_x, 2), pow(a_y - b_y, 2))
.
Я хочу получить следующие координаты на карте, например, a_x + distance и b_y + distance.
Я попытался это сделать, но это не сработало, ось x не изменилась должным образом.
Вот мой код:Генератор путевых точек между 2 точками на карте 2d
float base_x = active->getX();
float base_y = active->getY();
float destx = incoming_packet.get()->getFloat(4);
float desty = incoming_packet.get()->getFloat(8);
float distance = active->distance(destx, desty); // calculated by sqrt(pow(curent character x pos - destx, 2), pow(current character y pos - desty, 2))
float delta_X = active->vDistance(base_x, destx); // calculated by sqrt(pow(base_x - destx, 2))
float delta_Y = active->vDistance(base_y, desty); // calculated by sqrt(pow(base_y - desty, 2))
float cosa = delta_X/distance;
float sina = delta_Y/distance;
int mapx = 1;
int mapy = 1;
if(distance > 8)///active sync
{
for(float dist = 8; dist < distance;dist+=8)
{
base_x += mapx * (cosa * 8);
base_y += mapy * (sina * 8);
BOOST_LOG_TRIVIAL(debug) << "[ACTIVESYNC]NEXT SYNC ACK X : " << base_x << " Y : " << base_y;
}
}
Что я здесь делаю неправильно?
Большое вам спасибо, но я хотел пролить путь каждые 8 U дистанции. – user3126089
Мой фиктивный код создал 8 равных шагов между начальной и конечной точками, а сумма из 8 шагов должна составлять «расстояние». Так что же такое U? Вы думаете, что U –
U не понимал, когда у меня 16 дистанций, я хочу, чтобы он провалился на 2 шага (16/8 = 2), но я понял, что он принадлежит, спасибо за базовый код. – user3126089