Miglior approccio alla selezione dei linguaggi di programmazione e dell'API di grafica 3D per simulare esperimenti di fisica

6

Sto avviando un progetto di ricerca e ho bisogno di definire un linguaggio di programmazione e un'API di grafica 3D in cui creerò un ambiente nel campo della biologia cellulare molecolare dove simulerò una vasta gamma di esperimenti in silico. Questo sarà un progetto in corso che continuerà ad espandersi e crescere di dimensioni. Gli esperimenti saranno fatti in tempo discreto e comprenderanno un complesso motore fisico. La grafica carina non è importante né l'audio. Corro Ubuntu e questo è l'ambiente in cui mi sto sviluppando.

Le coppie che ho esaminato fino ad ora sono:

java : organizzazione flessibile, scalabile, lib / dipendente (maven), oo

  • jogl: controllo completo della grafica
  • jMonkeyEngine: libreria di giochi completa, include jBullet, forse un po 'eccessivo per quello di cui ho bisogno.

c ++ : alta velocità, basso livello, oo

  • opengl: controllo completo della grafica
  • maya: motore fisico costruito, infrastruttura già installata, proprietaria, non gratuita

matlab : pesantemente basato sulla matematica, ma difficile da mantenere e scalare

  • simulink: proprietario, non libero

Ho meno familiarità con Maya, ma mi è stato suggerito da un amico come un buon approccio. Quando Maya sarebbe una buona soluzione e sarebbe una buona scelta per questo tipo di caso? Proprio come pensare che jMonkey sarebbe eccessivo, questo è un po 'il mio sentimento su Maya.

Ci sono altri accoppiamenti che dovrei investigare?

Qualcuno ha avuto esperienza nel modificare una libreria fisica esistente e la flessibilità o la complessità di farlo (ad es. Bullet, JBullet, jinngine)? Incerto a questo punto se dovessi iniziare da zero o provare e modificare / espandere uno esistente.

Qualsiasi pensiero, feedback, input o qualsiasi altro suggerimento sarebbe molto apprezzato.

Grazie

    
posta wi1 15.02.2012 - 19:49
fonte

2 risposte

2

In primo luogo, ciò che stai facendo sembra essere strettamente correlato con il lavoro di ricerca di Chandrajit Bajaj ([email protected]) in biologia computazionale e visualizzazione molecolare. Rimbalzare via e-mail da lui e vedere quali suggerimenti ha. (Sospetto che dirà C ++ e OpenGL.) (Full Disclosure: Durante un periodo di aggiornamento tra un lavoro e l'altro, ho preso la classe di computer grafica per gli studenti da lui. Ho imparato un bel po 'e mi sono divertito molto.)

Inoltre, Jim Browne ([email protected]) ha fatto i suoi primi lavori di fisica computazionale e potrebbe avere alcune preziose intuizioni. Penso che Jim sia in pensione ora e potrebbe non rispondere all'e-mail. (Full Disclosure: ho preso una laurea in sistemi operativi da lui, e ho imparato un sacco. È, PERSONALMENTE, la ragione per cui UT Austin ha prima costruito il loro dipartimento di Computer Science. È stato istituito il dipartimento o lo ha perso alla Queen's University di Belfast.)

Secondo, ogni qualvolta qualcuno descrive qualcosa come "costoso", dovresti SEMPRE chiedere "Rispetto a cosa?" MATLAB è poco costoso rispetto a quello che ti costerebbe sviluppare e eseguire il debug di tutto il codice da zero.

In terzo luogo, se l'interattività non è un grosso problema, non è così difficile adattare un programma C ++ per scrivere un file che può essere poi inviato a MATLAB per un intenso numero di crunch. Durante il summenzionato lavoro di aggiornamento, ho ripetuto la classe di metodi numerici introduttivi del sottoscri. Abbiamo ridotto i numeri in C ++ e tracciato i risultati con MATLAB. (Ho avuto un sacco di divertimento in quella classe!) Quello era con Todd Arbogast ([email protected], penso). È SHARP, e potrebbe avere anche qualche suggerimento.

    
risposta data 15.02.2012 - 22:46
fonte
0

Non sono un professionista regolare su questo, ma sono stato coinvolto nello sviluppo che inizia con la ricerca (nell'elaborazione di immagini / video e aree correlate) e procede verso l'implementazione.

Suggerirei di non affrettare l'analisi pro / contro. Ci sono due domande fondamentali che definiranno le tue priorità.

1. Quanto è probabile (e sei disposto) buttare via il codice?
Se c'è una ricerca considerevole, avrai difficoltà a gestire i problemi linguistici di livello più basso solo per buttarti via ogni lunedì mattina. Tuttavia, se c'è già un PoC (proof of concept) o un prototipo in fornto, il tuo percorso è piuttosto diretto; dovresti evitare il doppio lavoro.

2. Di quali altri elementi dipende? Vuoi sviluppare tutto direttamente da zero. Esistono kit di strumenti specifici, API, framework che utilizzerai come dipendenza? Se è così, le tue scelte sono limitate proprio qui in

    
risposta data 16.02.2012 - 07:38
fonte

Leggi altre domande sui tag