mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 12:49:18 +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,
|
glm::clamp(pass.m_origin, batch.m_origin - batch.m_extent,
|
||||||
batch.m_origin + batch.m_extent) -
|
batch.m_origin + batch.m_extent) -
|
||||||
pass.m_origin;
|
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;
|
return;
|
||||||
if (batch.m_transforms.size() > 0) {
|
if (batch.m_transforms.size() > 0) {
|
||||||
double min_dist = std::numeric_limits<double>::max();
|
double min_dist = std::numeric_limits<double>::max();
|
||||||
@@ -594,9 +594,9 @@ void NvRenderer::RenderBatches(const RenderPass& pass) {
|
|||||||
batch.m_instance_radius))
|
batch.m_instance_radius))
|
||||||
continue;
|
continue;
|
||||||
glm::dvec3 offset = instance_transform[3].xyz - pass.m_origin;
|
glm::dvec3 offset = instance_transform[3].xyz - pass.m_origin;
|
||||||
double dist = glm::dot(offset, offset);
|
double dist2 = glm::length2(offset);
|
||||||
min_dist = glm::min(min_dist, dist);
|
min_dist = glm::min(min_dist, dist2);
|
||||||
max_dist = glm::max(max_dist, dist);
|
max_dist = glm::max(max_dist, dist2);
|
||||||
}
|
}
|
||||||
if (min_dist > max_dist) return;
|
if (min_dist > max_dist) return;
|
||||||
if (min_dist >= batch.m_sqr_distance_max ||
|
if (min_dist >= batch.m_sqr_distance_max ||
|
||||||
|
|||||||
@@ -96,14 +96,14 @@ void TAnimContainer::UpdateModel() {
|
|||||||
if (fTranslateSpeed != 0.0)
|
if (fTranslateSpeed != 0.0)
|
||||||
{
|
{
|
||||||
auto dif = vTranslateTo - vTranslation; // wektor w kierunku docelowym
|
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)
|
if (l2 >= 0.0001)
|
||||||
{ // jeśli do przemieszczenia jest ponad 1cm
|
{ // 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.
|
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 *
|
s = s *
|
||||||
(fTranslateSpeed *
|
(fTranslateSpeed *
|
||||||
Timer::GetDeltaTime()); // przemieszczenie w podanym czasie z daną prędkością
|
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;
|
vTranslation += s;
|
||||||
else
|
else
|
||||||
vTranslation = vTranslateTo; // koniec animacji, "koniec animowania" uruchomi
|
vTranslation = vTranslateTo; // koniec animacji, "koniec animowania" uruchomi
|
||||||
@@ -113,7 +113,7 @@ void TAnimContainer::UpdateModel() {
|
|||||||
{ // koniec animowania
|
{ // koniec animowania
|
||||||
vTranslation = vTranslateTo;
|
vTranslation = vTranslateTo;
|
||||||
fTranslateSpeed = 0.0; // wyłączenie przeliczania wektora
|
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
|
iAnim &= ~2; // wyłączyć zmianę pozycji submodelu
|
||||||
if( evDone ) {
|
if( evDone ) {
|
||||||
// wykonanie eventu informującego o zakończeniu
|
// 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 seg_len = scan_dir > 0 ? 0.0 : 1.0;
|
||||||
double const dzielnik = 1.0 / segment->GetLength();// rozdzielczosc mniej wiecej 1m
|
double const dzielnik = 1.0 / segment->GetLength();// rozdzielczosc mniej wiecej 1m
|
||||||
int krok = 0; // krok obliczeniowy do sprawdzania czy odwracamy
|
int krok = 0; // krok obliczeniowy do sprawdzania czy odwracamy
|
||||||
auto temp = pos_event - segment->FastGetPoint(seg_len);
|
len2 = glm::length2(pos_event - segment->FastGetPoint(seg_len));
|
||||||
len2 = glm::dot(temp, temp);
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
len1 = len2;
|
len1 = len2;
|
||||||
seg_len += scan_dir > 0 ? dzielnik : -dzielnik;
|
seg_len += scan_dir > 0 ? dzielnik : -dzielnik;
|
||||||
temp = pos_event - segment->FastGetPoint(seg_len);
|
len2 = glm::length2(pos_event - segment->FastGetPoint(seg_len));
|
||||||
len2 = glm::dot(temp, temp);
|
|
||||||
++krok;
|
++krok;
|
||||||
} while ((len1 > len2) && (seg_len >= dzielnik && (seg_len <= (1.0 - dzielnik))));
|
} while ((len1 > len2) && (seg_len >= dzielnik && (seg_len <= (1.0 - dzielnik))));
|
||||||
//trzeba sprawdzić czy seg_len nie osiągnął skrajnych wartości, bo wtedy
|
//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
|
{ // 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
|
SwitchExtension->Segments[2]->Init(p2, cp2 + p2, cp4 + p4, p4, segsize, r2, r4); // z punktu 2 do 4
|
||||||
auto p1p3 = p3 - p1;
|
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;
|
SwitchExtension->iRoads = 3;
|
||||||
else // dla 4 dróg będą dodatkowe 3 segmenty
|
else // dla 4 dróg będą dodatkowe 3 segmenty
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user