algoritmo efficiente da un punto di vista matematico?

Programmazione, algoritmica, teoria dell'informazione, ...
Rispondi
gurghet
Messaggi: 3
Iscritto il: 23 mag 2007, 20:10

algoritmo efficiente da un punto di vista matematico?

Messaggio da gurghet » 16 giu 2008, 17:01

Metterò il problema in soldoni. Sto scrivendo un programma per un videogioco che mi valuta se due percorsi fatti da macchinine si sono avvicinati abbastanza, nel qual caso unisce le due macchinine e ne visualizza una sola.

Siccome il gioco deve confrontare migliaia di percorsi al secondo, l'algoritmo che confronta i percorsi dev'essere più che efficiente. I percorsi non sono altro che un elenco lunghissimo di punti, che sono stati calcolati a priori equidistanti e rappresentano con ottima approssimazione il percorso delle macchinine.

Dato un percorso questo dev'essere confrontato con molti altri e deve essere stabilito per ogni confronto quali avvicina di una certa distanza minima. Molti percorsi devono essere esclusi a priori perché semplicemente sono troppo distanti da quello preso in esame per esserci anche una minima possibilità che si incrocino.

Quelli più vicini vanno confrontati con maggiore precisione in modo che si stabilista per quale tratto le macchinine hanno effettuato lo stesso percorso (con un certo margine di errore).

Grazie mille per l'aiuto

Erre
Messaggi: 11
Iscritto il: 03 dic 2008, 20:50

Messaggio da Erre » 05 dic 2008, 18:46

I percorsi non sono altro che un elenco lunghissimo di punti
:shock:

scusa se ti rispondo adesso...ma caso mai ti servisse.
in primis puoi operare per griglie. ovvero crei una griglia quadrata e se due macchinine sono nella stessa griglia calcoli la distanza [metti una grandezza a piacere...del tipo centro macchinina e bordo esterno...all incirca]
in questo modo semplifichi i calcoli e li lasci fare solo i confronti.

poi ...descartes non ti dice niente?? e i vettori?
perche devi usare una miriade di punti....
quando puoi mettere come Oxy l'angolo in fondo a sinistra etc
dai ad ogni macchinina due campi X, Y [difiniscili come vuoi, ma ti conviene usare l'unita di misura standard del linguaggio che usi, ma non i pixel.]

definisci un evento time, ed a seconda della velocità [una scorll bar...vedi tu, o tempo di pressione..stile acceleratore], gli dici di cambiare la posizione P(X,Y)

usando gli assi cartesiani puoi fruttare le rette [ o proprio i vettori, simulando un po tutto...in quel caso dovrei definire la costante di deccelerazione etc etc] per ottenere ogni volta la nuova posizione della macchinina.

per operare fluidamente ti consiglio di tenerti sui 30 fps [che poi è la soglia umana] mantenendo la cpu più leggera. [cioe ogni 1/30 sec il time ti sposta le macchinine...]


p.s.
se usi vbX questo che ti ho detto non serve a niente....la cpu sarà carica ugualmente ed anche un Nehalem v. 3ghz faticherebbe :lol:

saluti :) [/quote]
Chi dorme non piglia pesci,
....ma gelato, torta e caffe.

/garfield/

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti