Autor Wątek: Program kalkulujący orbity w VBA  (Przeczytany 7662 razy)

0 użytkowników i 3 Gości przegląda ten wątek.

Pon, 23 Lut 2015, 20:06:46

Offline Metall69

  • Kapral
  • **
  • Wiadomości: 116
  • Reputacja: 4
    • Zobacz profil
Biorę się właśnie za taki mały projekt w Excelu. Chcę zrobić na wykresie wizualizację różnych kształtów orbit: parabolicznej, eliptycznej, hiperbolicznej.. Macie może jakieś dobre opracowania na temat zależności kształtu orbity od prędkości (tak wiem, I i II prędkość kosmiczna, ale pierwszy raz babram się liczeniem elips), rysowaniu parametrycznie elips i innych, które mogłyby się przydać. Jak macie jakieś propozycje to napiszcie. Oczywiście podzielę się efektami mojej pracy jak skończę ;) Z góry dziękuję.

Pon, 23 Lut 2015, 22:17:53
Odpowiedź #1

Offline Robson

  • Sierżant
  • ****
  • Wiadomości: 421
  • Reputacja: 22
    • Zobacz profil
    • Opowieści Kerbali
A kolega chce wyznaczać elementy orbit, opierając się na Newtonowskiej teorii grawitacji? W takim razie najprościej jest, zamiast całkować prawo zachowania pędu po czasie, liczyć ze wzoru Bineta, czyli różniczkując po fi. Tak chciałem napisać, ale algorytm dla VBA byłby ciężki, lepiej by było w C napisać.
Znalazłem więc coś ciekawego, i myślę że było by to wspaniałe rozwiązanie, szczególnie patrząc, że są tam gotowe programy w QBasic, które łatwo będzie zaimplementować do visuala.

Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
Robson Kerman - Profesor Orbitologii Teoretycznej. Zabójca Piwo Grillsa Kermana zwanego Niedźwiedziem z Eve.
Jego oficjalnym guru jest Sobol - budowniczy wspaniałych części rakiet.

Reklama

Odp: Program kalkulujący orbity w VBA
« Odpowiedź #1 dnia: Pon, 23 Lut 2015, 22:17:53 »

Pon, 23 Lut 2015, 22:54:42
Odpowiedź #2

Offline Metall69

  • Kapral
  • **
  • Wiadomości: 116
  • Reputacja: 4
    • Zobacz profil
Wielkie dzięki :) Wygląda ładnie, ale ogarnę to jutro bo już dzisiaj nie mam siły. Póki co zrobiłem orbitę kołową i narysowałem na wykresie. Docelowo zamontuje suwaki, które określą wysokość i prędkość styczną w punkcie 0 i przełącznik planet :)
« Ostatnia zmiana: Pon, 23 Lut 2015, 22:57:43 wysłana przez Metall69 »

Wto, 24 Lut 2015, 10:53:38
Odpowiedź #3

Offline ShookTea

  • Plutonowy
  • ***
  • Wiadomości: 370
  • Reputacja: 20
    • Zobacz profil
Niezbyt związane z tematem, ale planowałem kiedyś zrobić appkę do wyliczania asyst grawitacyjnych. Projekt upadł z powodu braku czasu, ale może się za to jeszcze zabiorę. Jeśli tak, wrzucę, bo może się przydać.

PS. Miało się to nazywać "MechMaciuś".

Reklama

Odp: Program kalkulujący orbity w VBA
« Odpowiedź #3 dnia: Wto, 24 Lut 2015, 10:53:38 »

Wto, 24 Lut 2015, 15:59:59
Odpowiedź #4

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
W Excelu to raczej niezbyt dobry pomysł, z dwóch powodów:
1. Excel nie służy do pisania aplikacji
2. Osoby nieposiadające Office(czyli np. ja, wątpię, że to się da odpalić w Libre Office) nie odpalą tego

Nie lepiej byłoby to napisać w jakimś języku programowania? C/C++ to może nieco przesada, zwłaszcza, że nie ma żadnych wbudowanych bibliotek do rysowania, lecz może jakiś język .Net, czyli Visual Basic lub C#?

A pomysł jak najbardziej dobry, powodzenia z nim  :)

Wto, 24 Lut 2015, 17:03:08
Odpowiedź #5

Offline Robson

  • Sierżant
  • ****
  • Wiadomości: 421
  • Reputacja: 22
    • Zobacz profil
    • Opowieści Kerbali
No właśnie dla tego język C jest tak wspaniałym narzędziem, ponieważ programista implementuje sobie takie biblioteki, jakie mu są aktualnie potrzebne.
Chcesz rysować grafikę? Proszę bardzo, jest na przykład primlib, bardzo prosta i cholernie popularna biblioteka graficzna. Są darmowe silniki, jest DirectDraw (jak ktoś się czuje na siłach).
W naszym przypadku potrzebne jest narysowanie linii w przestrzeni 2D. Niezbyt to skomplikowane.
Robson Kerman - Profesor Orbitologii Teoretycznej. Zabójca Piwo Grillsa Kermana zwanego Niedźwiedziem z Eve.
Jego oficjalnym guru jest Sobol - budowniczy wspaniałych części rakiet.

Reklama

Odp: Program kalkulujący orbity w VBA
« Odpowiedź #5 dnia: Wto, 24 Lut 2015, 17:03:08 »

Wto, 24 Lut 2015, 17:15:37
Odpowiedź #6

Offline Metall69

  • Kapral
  • **
  • Wiadomości: 116
  • Reputacja: 4
    • Zobacz profil
Dlaczego VBA?
1. To projekt szkolny i muszę go zaliczyć :P
2. Na każdym komputerze w firmach i w większości domów jest pakiet biurowy.
3. Excel jest prosty, intuicyjny, w zadzie jest jedną wielką tablicą i możesz edytować każdą komórkę.
4. Stworzenie jakiejś prostackiej i idiotoodpornej aplikacji biurowej jest w nim dziecinnie proste.
5. Dodanie interfejsu(suwaków, przycisków), wprowadzanie danych jest bardzo proste.
6. Lubię Excela.
7. Ma pewne wady, ale mi wystarcza, nie planuję jakiejś kariery programistycznej.




Wto, 24 Lut 2015, 18:16:17
Odpowiedź #7

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
To twój program i zrobisz jak będziesz uważał.
1. Ja mam też projekt do szkoły związany z mechaniką orbitalną i ja niestety muszę go napisać w C++ i WinAPI, mimo, że nie cierpię WinAPI, bo jest zbyt niskopoziomowe i też bym chętnie napisał to w jakimś wysokopoziomowym API. Jednak jakbyś wybrał taki Visual Basic, to byś miał dużo łatwiej niż w Excelu - Excel nie służy do pisania programów, a w VB czy C# masz pełno bibliotek do najprzeróżniejszych rzeczy oraz wszystko jest wysokopoziomowe.
2. A tu byś się zdziwił, jest dużo firm, które wcale nie używają Office. Masz rację, ale pamiętaj, że pakiet biurowy to nie tylko Microsoft Office, podobnie jak system operacyjny to nie tylko Windows, a twoja aplikacja będzie wymagała MS Office i co za tym idzie, Windowsa.
3. Polenizowałbym. Dużo łatwiej byłoby mi napisać tą aplikację w jakimś wysokopoziomowym języku programowania i odpowiedniej do tego bibliotece, niż bawić się w pisanie w czymś, co nie służy do tego.
4. W językach zarządzanych jak C# czy VisualBasic też.
5. j.w. Masz graficzne narzędzie, w którym wybierasz sobie element(czyli przycisk, suwak itd.) i wsadzasz go w okienko, a potem klikasz na niego dwa razy i oprogramowujesz go.
6. Twoja sprawa  :)
7. j.w., lecz powtórzę poraz kolejny: Excel nie służy do pisania aplikacji.

Nie myśl tylko, że staram się ciebie do czegoś namówić  ;) Przedstawiam ci tylko swój punkt widzenia, bo uwielbiam takie dyskujse  :P Zrobisz jak będziesz chciał, to twoja aplikacja i mi nic do tego.

Reklama

Odp: Program kalkulujący orbity w VBA
« Odpowiedź #7 dnia: Wto, 24 Lut 2015, 18:16:17 »

Wto, 24 Lut 2015, 21:50:54
Odpowiedź #8

Offline Robson

  • Sierżant
  • ****
  • Wiadomości: 421
  • Reputacja: 22
    • Zobacz profil
    • Opowieści Kerbali
Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
4. W językach zarządzanych jak C# czy VisualBasic też.
5. j.w. Masz graficzne narzędzie, w którym wybierasz sobie element(czyli przycisk, suwak itd.) i wsadzasz go w okienko, a potem klikasz na niego dwa razy i oprogramowujesz go.
7. j.w., lecz powtórzę poraz kolejny: Excel nie służy do pisania aplikacji.

Metal mówi o VBA.
Jest to Visual Basic wbudowany w aplikację MSOffice. Oprócz tego, że można w nim pisać dosłownie to samo co w VB, to dodatkowo może wymieniać dane z w/w pakietem.
Dla tego wykorzystuje się go do pisania makr np w Excelu. Poza tym nie można skompilować kodu do pliku wykonywalnego.
Dla tego Kamils nie rozumiem punktu 4. w cytacie powyżej, punktu 5. i punktu 7.
Robson Kerman - Profesor Orbitologii Teoretycznej. Zabójca Piwo Grillsa Kermana zwanego Niedźwiedziem z Eve.
Jego oficjalnym guru jest Sobol - budowniczy wspaniałych części rakiet.

Wto, 24 Lut 2015, 22:25:11
Odpowiedź #9

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
VBA to jest odmiana Visual Basic wbudowana w pakiet Office do wykonywania makr, a Visual Basic w .Net jest to prawdziwy i pełnoprawny język programowania. Składnia ta sama, lecz ich wykorzystanie i budowa to już inna bajka.

Aplikacja napisana w VBA ogranicza się tylko do MS Office, który jak wspomniałem, nie każdy musi posiadać np. ja. Nie potrzebuję płacić takiej kasy za coś, co mam za darmo pod postacią LibreOffice. Zresztą jak wspomniałem wielokrotnie, VBA nie służy do pisania bardziej skomplikowanych aplikacji.

VBA to nie jest to samo co Visual Basic, mają tylko wspólną nazwę i składnię, lecz ich założenia są całkowicie odmienne.

Autor twierdzi, że stworzenie prostackiej i idioto odpornej aplikacji w VBA jest proste, na co odpowiedziałem, że w językach zarządzanych, jak C# czy VB też jest proste. Języki zarządzane są wysokopoziomowe i dzięki ich specyfikacji(są kompilowane do kodu zarządzanego, a nie maszynowego, stąd trudniej o błąd i podatność na psujących użytkowników) też są idioto odporne.

Autor i tak zrobi po swojemu, jak mówiłem, nie mam zamiaru go nawracać na siłę, prowadzę tylko pokojową dyskusję.
« Ostatnia zmiana: Wto, 24 Lut 2015, 22:27:04 wysłana przez kamils096 »

Reklama

Odp: Program kalkulujący orbity w VBA
« Odpowiedź #9 dnia: Wto, 24 Lut 2015, 22:25:11 »

Wto, 24 Lut 2015, 23:20:48
Odpowiedź #10

Offline Robson

  • Sierżant
  • ****
  • Wiadomości: 421
  • Reputacja: 22
    • Zobacz profil
    • Opowieści Kerbali
Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ

Visual Basic w .Net jest to prawdziwy i pełnoprawny język programowania
VBA to nie jest to samo co Visual Basic, mają tylko wspólną nazwę i składnię, lecz ich założenia są całkowicie odmienne.

Czyli VBA jest nieprawdziwy. No dziękuję za uświadomienie.

A więc jak byłem u teściowej na wakacjach i nie mając dostępu do moich zabawek, pisałem sobie programy w VBA, które w moim mniemaniu wykonywały dokładnie te same zadania co programy wykonywalne, tylko środowisko uruchomieniowe było, nazwijmy to, specyficzne, to się okazuje byłem w błędzie i nic nie było takie jak być powinno?

P.S.
Makro napisane w VBA w bardzo prosty sposób można przekonwertować na OpenOffice Basic.
Robson Kerman - Profesor Orbitologii Teoretycznej. Zabójca Piwo Grillsa Kermana zwanego Niedźwiedziem z Eve.
Jego oficjalnym guru jest Sobol - budowniczy wspaniałych części rakiet.

Śro, 25 Lut 2015, 00:07:46
Odpowiedź #11

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
Nigdzie nie napisałem, że VBA to nieprawdziwy język. Słowa "prawdziwy" użyłem w kontekście pisania aplikacji, bo w VBA możesz co najwyżej napisać makro udające aplikację, a nie prawdziwą aplikację. Ujmę to może inaczej:
VB .Net to język do pisania aplikacji, VBA to język makr w MS Office. Różnicy między aplikacją a makrem chyba nie muszę wyjaśniać, bo skoro doszedłeś do tej dyskusji, to ufam, że mam do czynienia z programistą, albo chociaż osobą obeznaną w temacie? Makro może udawać aplikację ze specyficznym środowiskiem uruchomieniowym, ale nie jest pełnoprawną aplikacją, tylko makrem.

Co do twojego pisania u teściowej, czy ja kiedykolwiek napisałem, że marko napisane w VBA nie może udawać aplikacji? Ciągle powtarzam, że makra pisane w VBA mogą udawać aplikacje, ale nie są aplikacjami, tylko makrami, a VBA nie służy do pisania aplikacji, tylko makr.

Obsługa formatów i wynalazków MS w wolnych programach nie jest pełna i nie mam absolutnie żadnej gwarancji, że przekonwertowane makro będzie działać jak należy w Open/Libre Office.

Przekręcasz nieco moje słowa.
« Ostatnia zmiana: Śro, 25 Lut 2015, 00:11:11 wysłana przez kamils096 »

Reklama

Odp: Program kalkulujący orbity w VBA
« Odpowiedź #11 dnia: Śro, 25 Lut 2015, 00:07:46 »

Śro, 25 Lut 2015, 12:14:08
Odpowiedź #12

Offline Robson

  • Sierżant
  • ****
  • Wiadomości: 421
  • Reputacja: 22
    • Zobacz profil
    • Opowieści Kerbali
Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
... ufam, że mam do czynienia z programistą, albo chociaż osobą obeznaną w temacie?

Na szczęście nie jestem programistą.
Piszę trochę w C, ale w większości są to sterowniki mikrokontrolerów lub aplikacje dla systemów wbudowanych, na potrzeby firmy w której pracuję.

Ale już nie offtopujmy.
Czekajmy cierpliwie na pierwsze linijki kodu.
Robson Kerman - Profesor Orbitologii Teoretycznej. Zabójca Piwo Grillsa Kermana zwanego Niedźwiedziem z Eve.
Jego oficjalnym guru jest Sobol - budowniczy wspaniałych części rakiet.

Śro, 25 Lut 2015, 15:17:35
Odpowiedź #13

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
@UP: Ja siedzę w pisaniu aplikacji, niezbyt lubię niskopoziomowe sprawy, masz rację, skończmy już z offtopem.

Mimo wszystko, czekam na gotową aplikację, niezależnie w czym będzie.  ;)

Reklama

Odp: Program kalkulujący orbity w VBA
« Odpowiedź #13 dnia: Śro, 25 Lut 2015, 15:17:35 »

Śro, 25 Lut 2015, 17:53:32
Odpowiedź #14

Offline Metall69

  • Kapral
  • **
  • Wiadomości: 116
  • Reputacja: 4
    • Zobacz profil
Nie wiedziałem, że wywołam taką zażartą programistyczną dyskusję. W tym przypadku nie miałem wyboru, bo to zajęcia ze znajomości VBA i pisanie w czymś innym odpada.

Co do postępu prac, jest gorzej niż źle. Zerżnąłem kod i w dodatku nie działa tak jak powinien, ale przynajmniej coś rysuje.
Chyba napiszę to od nowa, uwzględnie GM i R Ziemi. Póki co to tylko szkic podglądowy, implementacja gotowego algorytmu.
Kod:
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
Sub orbita()
Dim x As Double
Dim y As Double
Dim vx As Double
Dim vy As Double
Dim k As Double
Dim r As Double
Dim ax As Double
Dim ay As Double
Dim i As Integer


x = [R3C6]
y = [R4C6]
vx = [R5C6]
vy = [R6C6]
k = [R7C6]

For i = 1 To 10000
   
    x = x + vx * k
    y = y + vy * k
   
    r = (x * x + y * y) ^ (-3 / 2)
   
    ax = -x * r
    ay = -y * r
   
    vx = vx + ax * k
    vy = vy + ay * k
   
    Cells(10 + i, 1) = 180 * x
    Cells(10 + i, 2) = 180 * y
Next

End Sub
Dla danych:
x   0,5
y   0
vx   0,5
vy   1,6
k   0,001

Rysuje coś takiego:

 

Program kosmiczy - zady i walety.

Zaczęty przez Wawrzyn

Odpowiedzi: 9
Wyświetleń: 5041
Ostatnia wiadomość Wto, 10 Wrz 2013, 09:27:57
wysłana przez Kadaf