mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 04:19:19 +02:00
use glm::length2 instead of glm::dot for squared length
This commit is contained in:
@@ -583,7 +583,7 @@ void NvRenderer::RenderBatches(const RenderPass& pass) {
|
||||
glm::clamp(pass.m_origin, batch.m_origin - batch.m_extent,
|
||||
batch.m_origin + batch.m_extent) -
|
||||
pass.m_origin;
|
||||
if (glm::dot(closest_point, closest_point) >= batch.m_sqr_distance_max)
|
||||
if (glm::length2(closest_point) >= batch.m_sqr_distance_max)
|
||||
return;
|
||||
if (batch.m_transforms.size() > 0) {
|
||||
double min_dist = std::numeric_limits<double>::max();
|
||||
@@ -594,9 +594,9 @@ void NvRenderer::RenderBatches(const RenderPass& pass) {
|
||||
batch.m_instance_radius))
|
||||
continue;
|
||||
glm::dvec3 offset = instance_transform[3].xyz - pass.m_origin;
|
||||
double dist = glm::dot(offset, offset);
|
||||
min_dist = glm::min(min_dist, dist);
|
||||
max_dist = glm::max(max_dist, dist);
|
||||
double dist2 = glm::length2(offset);
|
||||
min_dist = glm::min(min_dist, dist2);
|
||||
max_dist = glm::max(max_dist, dist2);
|
||||
}
|
||||
if (min_dist > max_dist) return;
|
||||
if (min_dist >= batch.m_sqr_distance_max ||
|
||||
|
||||
@@ -96,14 +96,14 @@ void TAnimContainer::UpdateModel() {
|
||||
if (fTranslateSpeed != 0.0)
|
||||
{
|
||||
auto dif = vTranslateTo - vTranslation; // wektor w kierunku docelowym
|
||||
double l2 = glm::dot(dif, dif); // długość wektora potrzebnego przemieszczenia
|
||||
double l2 = glm::length2(dif); // długość wektora potrzebnego przemieszczenia
|
||||
if (l2 >= 0.0001)
|
||||
{ // jeśli do przemieszczenia jest ponad 1cm
|
||||
auto s = glm::normalize(dif); // jednostkowy wektor kierunku // Długość wektora nie jest równa 0, sprawdzane wcześniej więc wektor normalny będzie zawsze prawidłowy.
|
||||
s = s *
|
||||
(fTranslateSpeed *
|
||||
Timer::GetDeltaTime()); // przemieszczenie w podanym czasie z daną prędkością
|
||||
if (glm::dot(s, s) < l2) //żeby nie jechało na drugą stronę
|
||||
if (glm::length2(s) < l2) //żeby nie jechało na drugą stronę
|
||||
vTranslation += s;
|
||||
else
|
||||
vTranslation = vTranslateTo; // koniec animacji, "koniec animowania" uruchomi
|
||||
@@ -113,7 +113,7 @@ void TAnimContainer::UpdateModel() {
|
||||
{ // koniec animowania
|
||||
vTranslation = vTranslateTo;
|
||||
fTranslateSpeed = 0.0; // wyłączenie przeliczania wektora
|
||||
if (glm::dot(vTranslation, vTranslation) <= 0.0001) // jeśli jest w punkcie początkowym
|
||||
if (glm::length2(vTranslation) <= 0.0001) // jeśli jest w punkcie początkowym
|
||||
iAnim &= ~2; // wyłączyć zmianę pozycji submodelu
|
||||
if( evDone ) {
|
||||
// wykonanie eventu informującego o zakończeniu
|
||||
|
||||
@@ -59,14 +59,12 @@ double GetDistanceToEvent(TTrack const *track, basic_event const *event, double
|
||||
double seg_len = scan_dir > 0 ? 0.0 : 1.0;
|
||||
double const dzielnik = 1.0 / segment->GetLength();// rozdzielczosc mniej wiecej 1m
|
||||
int krok = 0; // krok obliczeniowy do sprawdzania czy odwracamy
|
||||
auto temp = pos_event - segment->FastGetPoint(seg_len);
|
||||
len2 = glm::dot(temp, temp);
|
||||
len2 = glm::length2(pos_event - segment->FastGetPoint(seg_len));
|
||||
do
|
||||
{
|
||||
len1 = len2;
|
||||
seg_len += scan_dir > 0 ? dzielnik : -dzielnik;
|
||||
temp = pos_event - segment->FastGetPoint(seg_len);
|
||||
len2 = glm::dot(temp, temp);
|
||||
len2 = glm::length2(pos_event - segment->FastGetPoint(seg_len));
|
||||
++krok;
|
||||
} while ((len1 > len2) && (seg_len >= dzielnik && (seg_len <= (1.0 - dzielnik))));
|
||||
//trzeba sprawdzić czy seg_len nie osiągnął skrajnych wartości, bo wtedy
|
||||
|
||||
@@ -770,7 +770,7 @@ void TTrack::Load(cParser *parser, glm::dvec3 const &pOrigin)
|
||||
{ // Ra 2014-07: dla skrzyżowań będą dodatkowe segmenty
|
||||
SwitchExtension->Segments[2]->Init(p2, cp2 + p2, cp4 + p4, p4, segsize, r2, r4); // z punktu 2 do 4
|
||||
auto p1p3 = p3 - p1;
|
||||
if (glm::dot(p1p3, p1p3) < 0.01) // gdy mniej niż 10cm, to mamy skrzyżowanie trzech dróg
|
||||
if (glm::length2(p1p3) < 0.01) // gdy mniej niż 10cm, to mamy skrzyżowanie trzech dróg
|
||||
SwitchExtension->iRoads = 3;
|
||||
else // dla 4 dróg będą dodatkowe 3 segmenty
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user