Web Analytics
Open Source Physics (OSP) – Fizika otvorenog koda

Podešavanje okruženja i za kreiranje OSP simulacija

U ovom tutorijalu ćete naučiti kako da pripremite razvojno okruženje za izradu fizičkih simulacija u Javi, koristeći IntelliJ IDEA i ACM biblioteku, pre nego što pređemo na sam OSP framework. Cilj je da korak po korak prođete kroz ceo proces – od instalacije IDE-a, preko kreiranja novog projekta, do pisanja prve aplikacije koja simulira matematičko klatno bez upotrebe OSP klasa.

Šta ćete naučiti

  • Instalacija i konfiguracija IntelliJ IDEA
    Preuzimanje Community ili Ultimate verzije, podešavanje JDK-a i osnovnih podešavanja za Java projekte.
  • Dodavanje ACM biblioteke (acm.jar)
    Kako da skinete i povežete acm.jar u vaš projekat, kako biste koristili grafičke i interaktivne komponente koje pruža ACM (Stanford CS) biblioteka.
  • Kreiranje Java projekta od nule
    Struktura direktorijuma, podešavanje modula i zavisnosti, prvi „Hello, World!“ program.
  • Razvijanje simulacije matematičkog klatna
    Definisanje diferencijalnih jednačina klatna, numerička integracija (Eulerova ili Runge–Kutta metoda), i grafički prikaz pomeranja klatna koristeći ACM GraphicsProgram.
  • Pokretanje i testiranje
    Kako da kreirate run konfiguraciju u IntelliJ-u, pokrenete vašu aplikaciju i verifikujete tačnost simulacije.

Nakon što uspešno savladate ovaj uvodni deo, bićete spremni za prelazak na korišćenje Open Source Physics (OSP) biblioteka i kreiranje naprednijih 2D i 3D simulacija.

Instalacija alata za OSP (IntelliJ IDEA)

Besplatne verzije IntelliJ IDEA

  1. Community Edition – open-source, podržava Java, Kotlin, Groovy, Scala, Android razvoj.
  2. Educational Edition – zasnovana na Community, sa dodatnim alatima za učenje i vežbanje.

Preuzimanje i instalacija

  1. Windows

    1. Otiđite na https://www.jetbrains.com/idea/download ili za Educational edition na https://www.jetbrains.com/edu-products/download/#section=idea.
    2. Izaberite Community Edition i kliknite Download za Windows.
    3. Pokrenite skinuti .exe fajl i pratite korake instalera:
      • Next → Accept → Next → Install
      • Na kraju ostavite kvačicu na “Run IntelliJ IDEA Community Edition” i kliknite Finish.
    4. Pri prvom pokretanju:
      • Ne treba licenca za Community Edition.
      • Preporučeno je da odaberete Dark ili Light temu.
      • IntelliJ će detektovati instalirane JDK-ove; ako nemate JDK, preuzmite npr. Zulu/OpenJDK i u IDE-u odaberite Configure → Project SDK → Add SDK i navedite putanju do JDK.
  2. Linux

    A) Preko zvaničnog .tar.gz

    1. Otiđite na https://www.jetbrains.com/idea/download i preuzmite “.tar.gz” za Community Edition.
    2. U terminalu pokrenite:
      cd ~/Downloads
      tar -xzf ideaIC-*.tar.gz
      sudo mv idea-IC-* /opt/idea-community
      
    3. Kreirajte launcher skriptu:
      sudo tee /usr/local/bin/idea << 'EOF'
      #!/usr/bin/env bash
      /opt/idea-community/bin/idea.sh "$@"
      EOF
      sudo chmod +x /usr/local/bin/idea
      
      Sada možete pokretati IntelliJ komandno sa idea.

    B) Preko Snap (Ubuntu, Mint…)

    sudo snap install intellij-idea-community --classic

Instalacija Educational Edition

  1. Na stranici za preuzimanje kliknite na tab Other versions i izaberite Educational Edition.
  2. Da biste dobili integrisane alate za učenje, u Community Edition-u idite na File → Settings → Plugins, pretražite “Educational” i instalirajte JetBrains Academy ili Educational plugin.
  3. Posle restartovanja, imaćete meni Learn za interaktivne kurseve i zadatke.
IntelliJ IDEA IDE za edukaciju – Strana dobrodošlice
IntellijIdeaIDE_za_edukaciju_Strana_dobrodoslice

Osnovna podešavanja u IntelliJ IDEA

Pre nego što se upustite u razvoj vaših simulacija ili drugih Java projekata, neophodno je da pravilno podesite razvojno okruženje. Sledeći koraci će vas provesti kroz osnovna podešavanja IntelliJ IDEA: od integracije JDK-a, preko instalacije dodatnih plugin-ova, do prilagođavanja tastaturskih prečica i teme.

1. Konfiguracija JDK-a

Prvi i najvažniji korak je dodavanje lokalno instaliranog Java Development Kita (JDK) u IntelliJ IDEA. Ovo omogućava kompajliranje i pokretanje vaših Java aplikacija.

  1. Otvorite:
    • Windows: File → Settings → Build, Execution, Deployment → SDKs
    • Linux/macOS: IntelliJ IDEA → Preferences → Build, Execution, Deployment → SDKs
  2. Kliknite na znak + → Add SDK → JDK.
  3. Izaberite putanju do root foldera vašeg JDK-a (onog koji sadrži pod-foldere bin, lib itd.):
    • C:\Program Files\Java\jdk-11.0.12 (Windows)
    • /usr/lib/jvm/java-11-openjdk (Linux)
  4. Obavezno unesite deskriptivni naziv, npr. “Java 11”, i kliknite OK.
  5. Konačno, idite na Project Structure → Project i u polju Project SDK izaberite upravo dodat JDK.

2. Instalacija plugin-ova

Da biste radili sa drugim jezicima i alatima unutar IntelliJ IDEA, potrebno je da instalirate odgovarajuće plugin-ove.

  1. Otvorite File → Settings → Plugins (ili IntelliJ IDEA → Preferences → Plugins).
  2. U pretrazi ukucajte željeni jezik ili alat (npr. “Scala”, “Python”, “Docker”).
  3. Kliknite Install, zatim Restart IDE kada se instalacija završi.

3. Prilagođavanje tastaturskih prečica i teme

IntelliJ IDEA omogućava izbor između više preddefinisanih keymap-ova i grafičkih tema, kako bi radno okruženje bilo što prijatnije.

  1. Keymap: Settings → Keymap – izaberite “Default”, “Eclipse”, “Visual Studio” ili drugi layout.
  2. Tema: Settings → Appearance & Behavior → Theme – odaberite “Darcula” (tamna) ili “IntelliJ Light”.

4. Prečica u meniju (Linux)

Ako ste instalirali IntelliJ IDEA iz .tar.gz paketa, prilikom prvog pokretanja IDE će vam ponuditi da kreira desktop entry za brže pokretanje sa GUI menija.

U slučaju da IDE ne ponudi automatski:

  1. Otvorite terminal i kreirajte skriptu:
    sudo tee /usr/local/bin/idea << 'EOF'
    #!/usr/bin/env bash
    /opt/idea-community/bin/idea.sh "$@"
    EOF
    sudo chmod +x /usr/local/bin/idea
    
  2. Sada možete da pokrenete IntelliJ komandno sa idea ili ga pronađite u aplikacijama vašeg desktop okruženja.

Postupak podešavanja JDK-a u IntelliJ IDEA

Da bi vaš Java projekat u IntelliJ IDEA radio bez grešaka, neophodno je da pravilno dodate i konfigurišete Java Development Kit (JDK). U nastavku sledi detaljan i korak–po–korak vodič koji će vas provesti kroz ceo proces, od otvaranja podešavanja pa sve do izbora novog Project SDK.

  1. Pokretanje podešavanja:
    • Windows: izaberite File → Settings
    • Linux/macOS: izaberite IntelliJ IDEA → Preferences
  2. Otvaranje strukture projekta:
    U okviru podešavanja pronađite i izaberite Project Structure (ili pritisnite Ctrl+Alt+Shift+S).
  3. Dodavanje novog SDK-a:
    Kliknite na znak + pored liste SDK-ova i odaberite JDK.
  4. Lociranje JDK instalacije:
    Pronađite root direktorijum vaše JDK instalacije, odnosno onaj koji sadrži pod-foldere bin i lib. Na primer:
    • C:\Program Files\Java\jdk-11.0.12 (Windows)
    • /usr/lib/jvm/java-11-openjdk (Linux)

    Važno: Budite sigurni da birate korenski folder JDK-a, a ne pod-direktorijume.

  5. Definisanje naziva SDK-a:
    U polje za naziv unesite nešto opisno, na primer Java 11, i kliknite OK.
  6. Postavljanje Project SDK:
    Ponovo otvorite Project Structure → Project i u okviru Project SDK izaberite upravo dodat JDK (npr. Java 11).

Nakon ovih koraka, IntelliJ će koristiti izabrani JDK za kompajliranje i pokretanje vaših Java aplikacija. Sada ste spremni da dalje radite na svojim simulacijama ili drugim projektima u Java okruženju.

Prozor za podešavanje Project Structure u IntelliJ IDEA
Project Structure prozor u IntelliJ IDEA

Kreiranje Java projekta bez OSP biblioteke

U sledećem odeljku vodićemo vas kroz proces podešavanja potpuno novog Java projekta u IntelliJ IDEA, bez oslanjanja na OSP biblioteke. Umesto toga, koristićemo acm.jar iz Stanford Java Task Force-a, koja je idealna za jednostavne grafičke i obrazovne aplikacije.

1. Kreiranje novog Java projekta

Prvo ćemo postaviti osnovnu strukturu samog projekta unutar IntelliJ IDEA.

  1. Na ekranu dobrodošlice kliknite na New Project.
  2. U dijalogu New Project izaberite:
    • Language: Java
    • Build System: IntelliJ (nije neophodno koristiti Maven ili Gradle)
    • Project SDK: odaberite prethodno podešen JDK 11
    Zatim kliknite Next pa Finish.
  3. IntelliJ će otvoriti prazan projekat sa podrazumevanim direktorijumom src.

2. Dodavanje acm.jar biblioteke

ACM biblioteka olakšava crtanje i interaktivne GUI komponente u obrazovne svrhe. Slede koraci za preuzimanje i uključivanje:

  1. Preuzmite acm.jar sa Stanford sajta:
  2. U IntelliJ IDEA:
    • Desni klik na modul projekta → Open Module Settings.
    • U sekciji Dependencies kliknite na + → JARs or directories….
    • Odaberite preuzeti acm.jar i potvrdite Compile scope.

3. Kratak uvod u acm.jar

acm.jar je bibliotekа koju je razvio Tim na Stanfordu kao deo knjige The Art and Science of Java (Eric Roberts). Namenjena je studentima za jednostavne grafičke aplikacije.

  • GraphicsProgram: bazna klasa za crtanje na platnu.
  • ConsoleProgram: interaktivni tekstualni ulaz/izlaz.
  • DialogProgram: osnovni dijaloški prozor.

Glavne prednosti:

  • Pojednostavljene GUI komponente (prozor, Canvas, dugmad).
  • Jednostavno crtanje linija, krugova i teksta.
  • Brza implementacija obrazovnih simulacija.

4. Primer Java aplikacije sa acm.jar

Sledeći kod prikazuje jednostavan GraphicsProgram koji crta krug na ekranu:

import acm.program.*;
import acm.graphics.*;

public class KlatnoBezOSP extends GraphicsProgram {
    public void run() {
        GOval kuglica = new GOval(100, 100, 50, 50);
        add(kuglica);
    }
    public static void main(String[] args) {
        new KlatnoBezOSP().start(args);
    }
}
  

Nakon uspešnog pokretanja, pojaviće se prozor sa krugom. Dalje, možete implementirati animaciju matematičkog klatna pomoću numeričke integracije i periodičnog obnavljanja ekrana.

Za više informacija o simulacijama u fizici sa Swing i AWT, posetite:

Ove stranice sadrže sve – od preuzimanja i uvođenja u biblioteke, do referentnih JavaDoc stranica i tutorijala za napredne GUI tehnike.


import acm.program.*;
import acm.graphics.*;
import java.awt.*;

public class MatematickoKlatno extends GraphicsProgram {
  
  private static final int DUZINA_KLATNA = 200;
  private static final double PERIOD = 2000; // u milisekundama
  private static final double AMPLITUDA = 100;

  private GLine nit;
  private GOval kugla;

  public void run() {
      setSize(400, 400);

      int sredinaX = getWidth() / 2;
      int vrhY = 50;

      // Kugla klatna
      kugla = new GOval(20, 20);
      kugla.setFilled(true);
      kugla.setColor(Color.RED);
      add(kugla);

      // Nit klatna
      nit = new GLine(0, 0, 0, 0);
      add(nit);

      while (true) {
          long vreme = System.currentTimeMillis() % (long)PERIOD;
          double ugao = AMPLITUDA * Math.sin(2 * Math.PI * vreme / PERIOD);

          double x = sredinaX + DUZINA_KLATNA * Math.sin(Math.toRadians(ugao));
          double y = vrhY + DUZINA_KLATNA * Math.cos(Math.toRadians(ugao));

          kugla.setLocation(x - kugla.getWidth()/2, y - kugla.getHeight()/2);
          nit.setStartPoint(sredinaX, vrhY);
          nit.setEndPoint(x, y);

          pause(10);
      }
  }
  /** Pokretač aplikacije kada idemo iz IDE-a ili komandne linije */
public static void main(String[] args) {
    new MatematickoKlatno().start(args);
}
}
Simulacija matematičkog klatna korišćenjem acm.jar biblioteke
IntellijIdeaIDE_za_edukaciju_Strana_dobrodoslice

Objašnjenje koda simulacije Matematičkog klatna

U nastavku je pregled glavnih delova koda i objašnjenje šta se dešava kada nasleđujete ACM-ovu klasu GraphicsProgram i kako se u metodi run() postavlja i pokreće animacija klatna.

Main metoda i nasleđivanje GraphicsProgram

Metodom public static void main(String[] args) kreiramo objekat klase MatematickoKlatno i pozivamo start(args). To pokreće ACM-ov životni ciklus:

  • init() – inicijalizacija pre run().
  • run() – glavni kod animacije.
  • start() i stop() – pozivi pri pokretanju i gašenju programa.

Statičke promenljive i članovi klase

Na početku klase definišu se konstante kojima kontrolišemo klatno:

  • DUZINA_KLATNA – dužina klatna u pikselima.
  • PERIOD – period oscilacije u milisekundama.
  • AMPLITUDA – maksimalni ugao ili pomeraj u pikselima.

Zatim se deklarišu grafički objekti: GLine nit za nit klatna i GOval kugla za samu kuglu.

Metoda run() – podešavanje i glavni tok

  1. Podešavanje prozora: setSize(600, 600) definiše dimenzije glavnog prozora.
  2. Inicijalizacija objekata: Kreiraju se GOval i GLine, podešavaju boje i dodaju na platno metodom add(...).
  3. Pokretanje animacije: while(true) petlja stalno izračunava položaj i osvežava prikaz.

Detalji while(true) petlje

  1. Čitanje vremena:
    long vreme = System.currentTimeMillis() % (long)PERIOD;
    Dobijamo trenutno vreme unutar jednog perioda oscilacije.
  2. Izračunavanje ugla:
    double ugao = AMPLITUDA * Math.sin(2*Math.PI*vreme/PERIOD);
    Sinusna funkcija daje glatko oscilovanje.
  3. Preračunavanje koordinata:
    double x = sredinaX + DUZINA_KLATNA*Math.sin(Math.toRadians(ugao));
    double y = vrhY + DUZINA_KLATNA*Math.cos(Math.toRadians(ugao));

    Trigonometrijom određujemo tačnu poziciju kugle.
  4. Ažuriranje grafike:
    kugla.setLocation(x - kugla.getWidth()/2, y - kugla.getHeight()/2);
    nit.setStartPoint(sredinaX, vrhY);
    nit.setEndPoint(x, y);
  5. Kontrola brzine:
    pause(10); uvodi kratku pauzu radi glatke animacije.

Klasa GraphicsProgram

GraphicsProgram iz ACM biblioteke automatski kreira GUI prozor i primerak canvas-a, pokreće init() i run(), te pruža metode:

  • add(GObject obj) / remove(GObject obj)
  • getWidth() / getHeight()
  • pause(int ms)
  • addMouseListeners(), addKeyListeners()
  • setSize(width, height), setBackground(Color)

Klase GLine i GOval

  • GLine
    Linija između dve tačke:
    • new GLine(x1,y1,x2,y2)
    • setStartPoint(x,y), setEndPoint(x,y)
  • GOval
    Oval/krug:
    • new GOval(width,height)
    • setFilled(true/false), setColor(Color)
    • setLocation(x,y)

Nasleđivanjem ovih klasa dobijate brz i jednostavan način za crtanje i animaciju u Java aplikacijama.