Получение расстояния в 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д пространстве) Сам ее немного доработал, как в школе учили) И написал сюда) Спасибо тебе! Очень полезная функция!
|
|
| |