16
0
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:
docentYT
2026-04-27 23:13:12 +02:00
parent d5d1825e38
commit 7d561f8443
4 changed files with 10 additions and 12 deletions

View File

@@ -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 ||

View File

@@ -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

View File

@@ -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

View File

@@ -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
{