CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Ruch jednostajnie przyspieszony C++

Ruch jednostajnie przyspieszony C++

dział ogólny

Re: Ruch jednostajnie przyspieszony C++

Nowy postprzez bartek » niedziela, 21 sierpnia 2011, 14:50

A tak działa gdy nie ma PozycjaX zrobione.
Sześcianem steruje się klawiszami strzałek na klawiaturze i klawiszami W i S
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
bartek
Bladawiec
Bladawiec
 
Posty: 27
Dołączył(a): niedziela, 14 sierpnia 2011, 18:16
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Ruch jednostajnie przyspieszony C++

Nowy postprzez bartek » niedziela, 21 sierpnia 2011, 14:53

Bardzo prosze o pomoc.
Avatar użytkownika
bartek
Bladawiec
Bladawiec
 
Posty: 27
Dołączył(a): niedziela, 14 sierpnia 2011, 18:16
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Ruch jednostajnie przyspieszony C++

Nowy postprzez Cyfrowy Baron » niedziela, 21 sierpnia 2011, 14:55

Czy ja gdzieś napisałem, że powinieneś to robić bez zmiennej PozycjaX?! Jak napisałem w swoim ostatnim poście sądzę, że błąd bierze się z tego, iż przekazałeś funkcji glTranslatef głębokość (PozycjaX) w miejsce długości i długość (PozycjaZ) w miejsce głębokości.

bartek napisał(a):Bardzo prosze o pomoc.


To niczego nie przyspieszy. Bez Twojego aktywnego udziału nie da się tego kodu poprawić.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Ruch jednostajnie przyspieszony C++

Nowy postprzez bartek » niedziela, 21 sierpnia 2011, 16:03

Cyfrowy baronie szlach mnie trafia widać nie rozumiesz. Zrobiłem teraz głębokość dla PozycjaZ i długość dla PozycjaX i teraz dla PozycjaZ obszar ograniczony nigdy się nie kończy do cholery. Dla PozycjaX się kończy, dla PozycjaY się kończy a dla PozycjaZ nigdy się nie kończy, właśnie w tym do diabła jest problem że dla jednej pozycji się nie kończy obszar ograniczony tylko jest w nieskończoność dla jednej pozycji bo szlach mnie trafia jak tak doradzasz a nie wiesz o co chodzi bo PozycjaX przypisze height PozycjaY przypisze width a nie wiem jak teraz mam przypisać do PozycjaZ żeby ograniczyć zasięg obszaru ograniczonego.
Avatar użytkownika
bartek
Bladawiec
Bladawiec
 
Posty: 27
Dołączył(a): niedziela, 14 sierpnia 2011, 18:16
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Ruch jednostajnie przyspieszony C++

Nowy postprzez bartek » niedziela, 21 sierpnia 2011, 16:25

Do cholery teraz jak to odwróciłem to do PozycjaX przypisze width i ogranicze wielkość obszaru ograniczonego w ten sposób rect.width = 1.5f;
Do pozycjaY przypisze height i ogranicze wielkość obszaru ograniczonego w ten sposób rect.height = 1.5f;
A jak mam ograniczyć wielkość obszaru ograniczonego dla PozycjaZ, co do tej pozycji przypisać.
Avatar użytkownika
bartek
Bladawiec
Bladawiec
 
Posty: 27
Dołączył(a): niedziela, 14 sierpnia 2011, 18:16
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Ruch jednostajnie przyspieszony C++

Nowy postprzez Cyfrowy Baron » niedziela, 21 sierpnia 2011, 20:03

Dodaj do tego kodu komunikaty by ustalić, czy przyczyną jest błąd w warunku czy może coś innego:

KOD cpp:     UKRYJ  
if ((PozycjaX < rect.PozycjaX + rect.length/2 + 0.1f)   && (PozycjaX > rect.PozycjaX))
{
 PozycjaX = rect.PozycjaX + rect.length/2 + 0.1f;

 ShowMessage("Osiągnięto warunek 1");
}

if ((PozycjaX > rect.PozycjaX - rect.length/2 - 0.1f)   && (PozycjaX < rect.PozycjaX))
{
 PozycjaX = rect.PozycjaX - rect.length/2 - 0.1f;
 
 ShowMessage("Osiągnięto warunek 2");

}


Jeżeli komunikaty wyskoczą, a program dalej będzie robił swoje to będzie oznaczać, że warunki są OK, a błędu należy szukać gdzieś indziej.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Ruch jednostajnie przyspieszony C++

Nowy postprzez bartek » niedziela, 21 sierpnia 2011, 23:04

Spełnia pierwszy warunek.
Avatar użytkownika
bartek
Bladawiec
Bladawiec
 
Posty: 27
Dołączył(a): niedziela, 14 sierpnia 2011, 18:16
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Ruch jednostajnie przyspieszony C++

Nowy postprzez Cyfrowy Baron » poniedziałek, 22 sierpnia 2011, 08:45

Już do czegoś doszliśmy. Pierwszy warunek jest prawidłowy, więc teraz wystarczy zastanowić się co się nie zgadza w drugim warunku. Trzeba ustalić jakie wartości przyjmuje PozycjaX w drugim warunku. Do sprawdzenia proponuję taki kod:

KOD cpp:     UKRYJ  
if ((PozycjaX < rect.PozycjaX + rect.length/2 + 0.1f)   && (PozycjaX > rect.PozycjaX))
{
 PozycjaX = rect.PozycjaX + rect.length/2 + 0.1f;

 ShowMessage("Osiągnięto warunek 1");
}

this->Caption = "PozycjaX: " + (String)PozycjaX + " | rect.PozycjaX: " + (String)(rect.PozycjaX - rect.length/2 - 0.1f);

if ((PozycjaX > rect.PozycjaX - rect.length/2 - 0.1f)   && (PozycjaX < rect.PozycjaX))
{
 PozycjaX = rect.PozycjaX - rect.length/2 - 0.1f;
 
 ShowMessage("Osiągnięto warunek 2");
}


W ten sposób na belce tytułowej programu będą się pokazywać wartości. Śledząc je możesz ustalić, czy i kiedy warunki są spełniane.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Ruch jednostajnie przyspieszony C++

Nowy postprzez bartek » czwartek, 1 września 2011, 11:07

Do diabła jasnego nie rozumiesz mnie cyfrowy baronie, mówie że Obszar ograniczony jest cały czas w głąb ekranu i zaczyna się od PozycjaX 0.85 i ten obszar w głąb ekranu nigdy sie nie kończy.
Avatar użytkownika
bartek
Bladawiec
Bladawiec
 
Posty: 27
Dołączył(a): niedziela, 14 sierpnia 2011, 18:16
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: brak systemu
Kompilator: brak kompilatora
Gadu Gadu: 0
    Windows XPFirefox

Re: Ruch jednostajnie przyspieszony C++

Nowy postprzez Cyfrowy Baron » piątek, 2 września 2011, 05:21

To nie zmienia faktu, że warunki są skonstruowane prawidłowo, poza jednym drobnym szczegółem:

bartek napisał(a):rect.length / 2


Jeżeli dzielisz liczbę zmienno-pozycyjną to powinieneś ją dzielić przez taką właśnie liczbę, czyli:

KOD cpp:     UKRYJ  
rect.length / 2.00


Sprawdziłem te warunki u siebie, oczywiście nie dla kodu z OpenGL, ale przecież chodziło tylko o sprawdzenie, czy warunki działają i działają. Nie wiem co robisz źle.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Poprzednia strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości