03-05-2023, 05:27 PM
(03-05-2023, 05:06 PM)CSslymer Wrote: Každý predmet má niekoľko objektov.
Každý objekt má niekoľko strán
Každá strana má niekoľko súradníc.
Čo sa môže zmeniť.
Musím ich vytriediť.
Vk = náhodné číslo
Objekt(1, 1, 1, 0).z = Vk
Objekt(1, 1, 1, 1).x = -Vk
Objekt(1, 1, 1, 1).y = -Vk
Objekt(1, 1, 4, 4).x = Vk
Objekt(1, 1, 4, 4).y = -Vk
Objekt(1, 1, 4, 4).z = Vk
Objekt(2, 1, 2, 6).x = Vk
Objekt(2, 1, 2, 6).y = Vk
Objekt(2, 1, 2, 6).z = Vk
Objekt ( 2 , 1 , 2 , 6 )
Predmet - Objekt - Strana - súradnice
Počítal som súradnice a spočítal steny na obejct.
Teraz mám Predmet a Objekt
Skúsil som toto a nefunguje to veľmi dobre:
SwapStran(i, a, b).z = SwapStran(i, a, b).z + Z
SwapObjektov(i, a).z = SwapObjektov(i, a).z + SwapStran(i, a, b).z
--
SwapSubjektov(i).z = SwapSubjektov(i).z + SwapObjektov(i, a).z
toto už nie je možné
pretože súčet rôznych predmetov je príliš veľký a nefunguje to
--
SwapingStran:
Pre i = 1 Do PocetSubjektov
Ak PovolenieSwapObjektov(i) = 1 Potom
Znovu = 0
Pre a = 1 To Subjekt(i).PocetObjektov
Pre b = 1 To Subjekt(i).PocetStran
k = 1: Ak b = Predmet(i).PocetStran Potom k = 0
Ak SwapStran(i, a, b).z > SwapStran(i, a, b + k).z Potom
Swap SwapStran(i, a, b).z, SwapStran(i, a, b + k).z
Znovu = 1
Koniec Ak
Ďalej b
Ďalej a
Ak Znovu = 1, potom prejdite na SwapingStran:
Koniec Ak
Ďalej i
SwapingObjektov:
Pre i = 1 Do PocetSubjektov
Ak PovolenieSwapObjektov(i) = 1 Potom
Znovu = 0: O = 0: Ak i = PocetSubjektov Potom O = 1
Pre a = 1 To Subjekt(i).PocetObjektov
k = 1: Ak a = Subjekt(i).PocetObjektov Potom k = 0
Ak SwapObjektov(i - O, a).z < SwapObjektov(i, a + k).z Potom
Swap SwapObjektov(i - O, a).z, SwapObjektov(i, a + k).z
Znovu = 1
Koniec Ak
Ďalej a
Koniec Ak
Ďalej i
If Znovu = 1 Then GoTo SwapingObjektov
-------------------------------------------------- -------------------------------------
Tu je problém:
Výmena Subjektov:
Znovu = 0: ii = 0: a1 = 1: a = 0
Pre i = 1 Do PocetSubjektov
ii = ii + 1
Ak i + ii >= PocetSubjektov Potom ii = 0: Znovu = 0
Ak PovolenieSwapObjektov(i) = 1 alebo PovolenieSwapObjektov(i + ii) = 1 Potom
Do
a = a + 1
Ak SwapObjektov(i, a).z < SwapObjektov(i + ii, a1).z Potom
Swap SwapObjektov(i, a).z, SwapObjektov(i + ii, a1).z
Znovu = 1
Koniec Ak
Ak a >= Predmet(i).PocetObjektov Potom
a = 0
a1 = a1 + 1
Koniec Ak
Ak a1 >= Subjekt(i + ii).PocetObjektov Then a1 = 1: Exit Do
Slučka, kým znovu = 1
Koniec Ak
Ďalej i
If Znovu = 1 Then GoTo SwapingSubjektov
wow PE has come a long way