Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Получение расстояния в 3D
BarD Дата: Воскресенье, 01.06.2014, 07:53:58 | Сообщение # 1
Сообщений: 943
Репутация: 137 [ +/- ]
Какой функцией можно получить расстояние (дистанцию) между двумя точками в 3D пространстве?
 
хвостег Дата: Воскресенье, 01.06.2014, 11:31:32 | Сообщение # 2
Сообщений: 161
Репутация: 53 [ +/- ]
GetVectorDistance
 
BarD Дата: Воскресенье, 01.06.2014, 15:26:44 | Сообщение # 3
Сообщений: 943
Репутация: 137 [ +/- ]
хвостег, эта функция получает расстояние между точками или векторами? Просто написано в api: "Calculates the distance between two vectors." (Получает дистанцию между векторами). Это меня немного смутило) Ну ладно, попробую, спасибо!

Лови + в репу)


Сообщение отредактировал BarD - Воскресенье, 01.06.2014, 15:26:54
 
хвостег Дата: Воскресенье, 01.06.2014, 15:49:32 | Сообщение # 4
Сообщений: 161
Репутация: 53 [ +/- ]
Цитата BarD ()
хвостег, эта функция получает расстояние между точками или векторами?

Интересно как ты себе представляешь точку в пространстве?


Сообщение отредактировал хвостег - Воскресенье, 01.06.2014, 15:50:47
 
BarD Дата: Воскресенье, 01.06.2014, 16:16:42 | Сообщение # 5
Сообщений: 943
Репутация: 137 [ +/- ]
Эм, какая-то позиция с координатами (XYZ)
 
Naykon Дата: Вторник, 03.06.2014, 10:11:45 | Сообщение # 6
Сообщений: 439
Репутация: -4 [ +/- ]
sm_hosties (метание дигла) - разбери.
 
BarD Дата: Вторник, 03.06.2014, 10:19:02 | Сообщение # 7
Сообщений: 943
Репутация: 137 [ +/- ]
Да я уже сообразил, как сделать) Способ из геометрии. Приравниваем высоты точек и находим расстояние между ними, а потом находим гипотенузу по формуле: квадратный корень из квадрата расстояния между точками, сложенного с квадратом высоты. Нарисуйте и поймете))
 
Tokami Дата: Вторник, 03.06.2014, 10:27:57 | Сообщение # 8
Сообщений: 238
Репутация: 19 [ +/- ]
BarD, ты это полегче давай то я гиа не сдал:DDD
 
BarD Дата: Среда, 04.06.2014, 12:28:44 | Сообщение # 9
Сообщений: 943
Репутация: 137 [ +/- ]
Рабочая функция:

Цитата
stock Float:GetDistance(Float:pos1[3], Float:pos2[3]) //получает дистанцию между двух точек. (В 3D пространстве).
{ new Float:res;
res = SquareRoot( Pow(pos2[0] - pos1[0], 2.0) + Pow(pos2[1] - pos1[1], 2.0) ); //Получаем расстояние между 2 точками в 2D
new Float:high;
if (pos1[2] < pos2[2])// Если высота 2 точки больше высоты 1 точки, то отнимаем от 2 высоты первую.
{
high = pos2[2] - pos1[2];
}
else //Если наоборот, то отнимаем от первой высоты вторую.
{
high = pos1[2] - pos2[2];
}
new Float:end;
end = SquareRoot( Pow(high, 2.0) + Pow(res , 2.0) ); //Находим гипотенузу путем теоремы Пифагора для 2 катетов (высота и расстояние)
return end; //Выводим то, что получилось.
}


Сообщение отредактировал BarD - Среда, 04.06.2014, 12:29:40
 
horr0r Дата: Пятница, 06.06.2014, 12:17:39 | Сообщение # 10
Сообщений: 149
Репутация: 40 [ +/- ]
BarD, где нашел эту функцию? Я ее давно писал(ну по этой строке и комментарий мой "SquareRoot( Pow(pos2[0] - pos1[0], 2.0) + Pow(pos2[1] - pos1[1], 2.0) ); //Получаем расстояние между 2 точками в 2D" ).
Пздц, как ее усложнили.
Вот в 3d намного проще.
Код

stock Float:GetDistance(Float:pos1[3], Float:pos2[3]) //получает дистанцию между двух точек. (В 3D пространстве).  
{
      return SquareRoot( Pow(pos2[0] - pos1[0], 2.0) + Pow(pos2[1] - pos1[1], 2.0) + Pow(pos2[2]-pos1[2]); //Получаем расстояние между 2 точками в 3D  
}

Вот вся функция, сразу вставляй. В той бессмыслица получается.
Лучше используй GetVectorDistance. Она быстрее работает, чем моя.
 
BarD Дата: Пятница, 06.06.2014, 12:56:43 | Сообщение # 11
Сообщений: 943
Репутация: 137 [ +/- ]
horr0r, нашел твою функцию тут: http://world-source.ru/forum/100-2385-1 ) Тут ты получаешь в 2д пространстве) Сам ее немного доработал, как в школе учили) И написал сюда) Спасибо тебе! Очень полезная функция!
 
  • Страница 1 из 1
  • 1
Поиск: