Sortowanie punktów 3D(x,y,z) względem punktu 0,0,0
Ostatnio zmodyfikowano 2014-01-09 07:36
piotr7k Temat założony przez niniejszego użytkownika |
Sortowanie punktów 3D(x,y,z) względem punktu 0,0,0 » 2014-01-08 19:48:30 Witam , potrzebuje zrobić generator punktów 3D w strukturze które potem będzie można sortować względem punktu 0,0,0 od najbliżej leżącego do najdalej . Poradzono mi żeby zrobić funkcję sprawdzającą położenie 2 punktów, problem polega na tym że nie zupełnie wiem jak to wszystko połączyć Napisałem coś takiego: struct Wektory_3D { int x; int y; int z; }
bool czy_mniejsze( Wektory_3D w1, Wektory_3D w2 ) { double odl1 = sqrt( static_cast < float >(( w1.x ) *( w1.x ) +( w1.y ) *( w1.y ) +( w1.z ) *( w1.z ) ) ); double odl2 = sqrt( static_cast < float >(( w2.x ) *( w2.x ) +( w2.y ) *( w2.y ) +( w2.z ) *( w2.z ) ) ); if( odl1 > odl2 ) return true; else return false; } void BubbleSort( Wektory_3D * tab, int n ) { int zmiana; do { zmiana = 0; for( int i = 0; i < n; i++ ) { if( czy_mniejsze( w1, w2 ) ) { zmiana++; struct Wektory_3D schowek = w1; w1 = w2; w2 = schowek; } } } while( zmiana != 0 ); } int _tmain( int argc, _TCHAR * argv[] ) { srand( time( NULL ) ); int i; int n = 10; Wektory_3D w[ 1000 ]; for( i = 0; i < n; i++ ) { w[ i ].x = rand() % 10 + 1; w[ i ].y = rand() % 10 + 1; w[ i ].z = rand() % 10 + 1; cout << i << " "; cout << w[ i ].x << "," << w[ i ].y << "," << w[ i ].z << endl; }
JAk by ktoś wiedział jak to wszystko ogarnąc proszę o podpowiedź:) |
|
RazzorFlame |
» 2014-01-08 20:48:47 A co szwankuje? Poza tym chyba chodziło ci o wyliczenie boku C za pomocą twierdzenia pitagorasa. Ja bym to zrobił jakoś tak: double bokC = pow( x * x + y * y + z * z, 1.0 / 3 );
Edit: To jest bardziej takie zmodyfikowane twierdzenie pitagorasa ;P |
|
piotr7k Temat założony przez niniejszego użytkownika |
» 2014-01-08 21:41:28 Generalnie chodzi o to, że nie wiem jak ten cały kod zaimplementować, bo generator generuje te punkty, ale nie wiem jak zrobić żeby te punkty były później posortowane. |
|
DejaVu |
» 2014-01-09 03:15:51 Przecież ten kod jest praktycznie gotowy - jedynie co trzeba zrobić to dopisać wywołanie funkcji sortującej tablicę. |
|
RazzorFlame |
» 2014-01-09 07:36:12 Tak właściwie to zastanawiałem się dlaczego ja to w ogóle pisze (ten wzór) bo równie dobrze można dodać te osie bez żadnej zabawy z sqrt i pow-em bo jeśli dzieli się obie liczby to tak na prawde nie ma to znaczenia chyba, że chce sie uzyskać taką właściwą odległość. |
|
« 1 » |