calcolo posizione

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

calcolo posizione

Messaggio da cp94 »

Ciao a tutti,
qualcuno sarebbe così gentile da spiegarmi come posso fare a ottenere una coppia di coordinate indicanti la mia posizione all'interno di un triangolo, conoscendo solamente le tre distanze tra me e i vertici?
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: calcolo posizione

Messaggio da pacmino »

come fai a conoscere la distanza tra te e un vertice se non hai le tue coordinate?
Immagine

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: calcolo posizione

Messaggio da cp94 »

pacmino ha scritto:come fai a conoscere la distanza tra te e un vertice se non hai le tue coordinate?
Ti spiego meglio quello che voglio fare:
Io ho una mappa 3d nella quale sono presenti degli edifici che corrispondono in questo caso a dei vertici.
Conoscendo la mia posizione e le distanze dai tre vertici (edifici) più vicini vorrei far riportare la mia posizione su una cartina (la mappa di gioco) che non è real-time.
La mappina ovviamente è in scala e ha tutte le coordinate degli edifici al loro posto.

Comunque ho constatato che non si può fare una cosa simile per come ho impostato le cose io, quindi niente.. topic inutile :lol:
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Avatar utente
guidox
GMI Honor
Messaggi: 5765
Iscritto il: 26/07/2009, 17:23
Specialità: programmazione
Uso: GM:Studio 1.4 Android
Località: Marche
Contatta:

Re: calcolo posizione

Messaggio da guidox »

Ho capito che non ti serve più... Però visto che mi ha incuriosito sta cosa potresti spiegarti meglio, che non ho capito nulla? :asd:
Immagine

Immagine

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: calcolo posizione

Messaggio da cp94 »

guidox ha scritto:Ho capito che non ti serve più... Però visto che mi ha incuriosito sta cosa potresti spiegarti meglio, che non ho capito nulla? :asd:
In poche parole:
Avendo la mia posizione e la posizione dei tre vertici del triangolo posso calcolare le distanze tra questi ultimi tre e me stesso,
Ma conoscendo invece solamente la posizione dei tre vertici e le tre distanze, posso ricavare la posizione del player? Questa era la domanda.
Se non è ancora chiaro boh.. potrei fare un disegno :lol:
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Avatar utente
Lord Of Destruction
Membro d'elite
Messaggi: 1161
Iscritto il: 02/06/2009, 11:48
Specialità: Grafico-Progammatore
Località: Vault 101
Contatta:

Re: calcolo posizione

Messaggio da Lord Of Destruction »

cioè.. hai il risultato di una funzione che associa ad una coppia di elementi dello spazio vettoriale R2 un elemento dei reali, ma ti manca una delle coppie?

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: calcolo posizione

Messaggio da cp94 »

Ehm.. si, mi manca la coppia che indica dove sto io, ovvero il punto di intersezione tra i tre vettori distanza ognuno dei quali ha origine nel proprio vertice.
Comunque come ho già detto ho deciso di non implementare più questa cosa. Se volete però trovare una soluzione traducibile in codice potrebbe risultare istruttiva sia per me che per, magari, qualcun'altro :)
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Avatar utente
Lord Of Destruction
Membro d'elite
Messaggi: 1161
Iscritto il: 02/06/2009, 11:48
Specialità: Grafico-Progammatore
Località: Vault 101
Contatta:

Re: calcolo posizione

Messaggio da Lord Of Destruction »

ma la distanza non è un vettore, è un numero ;D
hai
[latex]\begin{equation}
\begin{cases}
d_1^2=(x_2-x_1)^2+(y_2-y_1)^2\\d_2^2=(x_3-x_1)^2+(y_3-y_1)^2\\ (d_3^2=(x_4-x_1)^2+(y_4-y_1)^2) questa-non-ti-serve
\end{cases}
\end{equation}[/latex]

con incognite solo x1 e y1

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: calcolo posizione

Messaggio da cp94 »

Volevo dire vettore direzione*distanza, comunque questo denota le mie conoscenze in matematica ahaha
Comunque grazie, eccola li la formulina che non mi ricordavo! :mrgreen:
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Nix
GMI Advanced
Messaggi: 2437
Iscritto il: 26/12/2008, 18:14
Uso: GM:Studio 2
Contatta:

Re: calcolo posizione

Messaggio da Nix »

Lord Of Destruction ha scritto:[latex](d_3^2=(x_4-x_1)^2+(y_4-y_1)^2) questa-non-ti-serve[/latex]
Sei sicuro che non serva? Essendo equazioni di secondo grado, potrebbero esserci più soluzioni alle prime due.

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: calcolo posizione

Messaggio da Tizzio »

Spiegati meglio con un immagine per favore, perché non ho realmente capito l'incognita del problema.
Sembra che la soluzione sia nei dati.
cp94 ha scritto: Avendo la mia posizione e la posizione dei tre vertici del triangolo posso calcolare le distanze tra questi ultimi tre e me stesso,
E questo mi sembra ok.
cp94 ha scritto: Ma conoscendo invece solamente la posizione dei tre vertici e le tre distanze, posso ricavare la posizione del player? Questa era la domanda.
Se non è ancora chiaro boh.. potrei fare un disegno :lol:
Come calcoli/ottieni questa distanza? (come puoi capire, il problema si auto-risolve in questo caso, dato che sostanzialmente usi pitagora)

Codice: Seleziona tutto

(player.x - vtx.x)^2 + (player.y - vtx.y)^2 = d^2

Nel caso per "magia" tu avessi solamente un vettore che parte dal vertice ed è direzionato verso il player (come hai scritto qui sopra).

Codice: Seleziona tutto

player.position = vertex.position + vertex.vectorToPlayer; //presumo tu stia usando unity

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: calcolo posizione

Messaggio da Solid Snake »

Praticamente hai la posizione dei 3 vertici e le distanze di questi vertici dal punto della posizione... e tu vorresti calcolare questa posizione? :confuso:
Una cosa tipo questa (Immaginando che la posizione sia dentro al triangolo ABC)?
Immagine
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Avatar utente
Lord Of Destruction
Membro d'elite
Messaggi: 1161
Iscritto il: 02/06/2009, 11:48
Specialità: Grafico-Progammatore
Località: Vault 101
Contatta:

Re: calcolo posizione

Messaggio da Lord Of Destruction »

Nix ha scritto:
Lord Of Destruction ha scritto:[latex](d_3^2=(x_4-x_1)^2+(y_4-y_1)^2) questa-non-ti-serve[/latex]
Sei sicuro che non serva? Essendo equazioni di secondo grado, potrebbero esserci più soluzioni alle prime due.
mmm effettivamente potrebbe servire.. visto che ottengo una circonferenza di possibili coppie di coordinate con una sola equazione, fino a due possibili coppie di coordinate con due equazioni (intersezioni delle due circonferenze, presumendo che non siano coincidenti XD ovvero che stia calcolando due volte la stessa distanza dallo stesso palazzo). La terza potrebbe servire per escludere una delle due coppie.

Avatar utente
Tizzio
GMI Honor
Messaggi: 5836
Iscritto il: 29/06/2010, 23:43
Specialità: programmazione
Contatta:

Re: calcolo posizione

Messaggio da Tizzio »

Solid Snake ha scritto:Praticamente hai la posizione dei 3 vertici e le distanze di questi vertici dal punto della posizione... e tu vorresti calcolare questa posizione? :confuso:
Una cosa tipo questa (Immaginando che la posizione sia dentro al triangolo ABC)?
Immagine
In quella immagine non ci sono soluzioni.
L'unica possibile (per cui le 3 distanze[raggi] valgono), è l'intersezione tra le 3 circonferenze (quello che ha postato lod, praticamente)

L'unico punto potrebbe essere questo
Immagine

ma c'è un intersezione tra le 3 contemporaneamente

Per essere corretto, dovrebbe essere così:
Immagine

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: calcolo posizione

Messaggio da cp94 »

Lord Of Destruction ha scritto:ma la distanza non è un vettore, è un numero ;D
hai
[latex]\begin{equation}
\begin{cases}
d_1^2=(x_2-x_1)^2+(y_2-y_1)^2\\d_2^2=(x_3-x_1)^2+(y_3-y_1)^2\\ (d_3^2=(x_4-x_1)^2+(y_4-y_1)^2) questa-non-ti-serve
\end{cases}
\end{equation}[/latex]

con incognite solo x1 e y1
Ma questo sistema funziona ancora anche se (x1,y1) sono fuori dal triangolo (x2,y2)(x3,y3)(x4,y4) ?
Spoiler
Immagine
La soluzione di lod mi sembra ottima comunque, volevo solo esser certo di questa cosa.
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: calcolo posizione

Messaggio da Solid Snake »

Tizzio ha scritto: In quella immagine non ci sono soluzioni.
L'unica possibile (per cui le 3 distanze[raggi] valgono), è l'intersezione tra le 3 circonferenze (quello che ha postato lod, praticamente)

L'unico punto potrebbe essere questo
Immagine

ma c'è un intersezione tra le 3 contemporaneamente

Per essere corretto, dovrebbe essere così:
Immagine
E' proprio quello che intendevo... :asd:
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: calcolo posizione

Messaggio da cp94 »

Solid Snake ha scritto:
Tizzio ha scritto: In quella immagine non ci sono soluzioni.
L'unica possibile (per cui le 3 distanze[raggi] valgono), è l'intersezione tra le 3 circonferenze (quello che ha postato lod, praticamente)

L'unico punto potrebbe essere questo
Spoiler
Immagine
ma c'è un intersezione tra le 3 contemporaneamente

Per essere corretto, dovrebbe essere così:
Immagine
E' proprio quello che intendevo... :asd:
Ma come faccio a tradurlo in codice in modo che abbia un
return Vector2(x1,y1);

Ho provato a ricavare (x1,y1) dal sistema ma non ci sono riuscito. Magari è una cazzata, però in questo momento non ci riesco XD
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: calcolo posizione

Messaggio da Solid Snake »

Prova traducendo questo:

Codice: Seleziona tutto

private boolean calculateThreeCircleIntersection(double x0, double y0, double r0,
                                                 double x1, double y1, double r1,
                                                 double x2, double y2, double r2)
{
    float res=0.00001;
    double a, dx, dy, d, h, rx, ry;
    double point2_x, point2_y;

    /* dx and dy are the vertical and horizontal distances between
    * the circle centers.
    */
    dx = x1 - x0;
    dy = y1 - y0;

    /* Determine the straight-line distance between the centers. */
    d = Math.sqrt((dy*dy) + (dx*dx));

    /* Check for solvability. */
    if (d > (r0 + r1))
    {
        /* no solution. circles do not intersect. */
        return false;
    }
    if (d < Math.abs(r0 - r1))
    {
        /* no solution. one circle is contained in the other */
        return false;
    }

    /* 'point 2' is the point where the line through the circle
    * intersection points crosses the line between the circle
    * centers.
    */

    /* Determine the distance from point 0 to point 2. */
    a = ((r0*r0) - (r1*r1) + (d*d)) / (2.0 * d) ;

    /* Determine the coordinates of point 2. */
    point2_x = x0 + (dx * a/d);
    point2_y = y0 + (dy * a/d);

    /* Determine the distance from point 2 to either of the
    * intersection points.
    */
    h = Math.sqrt((r0*r0) - (a*a));

    /* Now determine the offsets of the intersection points from
    * point 2.
    */
    rx = -dy * (h/d);
    ry = dx * (h/d);

    /* Determine the absolute intersection points. */
    double intersectionPoint1_x = point2_x + rx;
    double intersectionPoint2_x = point2_x - rx;
    double intersectionPoint1_y = point2_y + ry;
    double intersectionPoint2_y = point2_y - ry;

    Log.d("INTERSECTION Circle1 AND Circle2:", "(" + intersectionPoint1_x + "," + intersectionPoint1_y + ")" + " AND (" + intersectionPoint2_x + "," + intersectionPoint2_y + ")");

    /* Lets determine if circle 3 intersects at either of the above intersection points. */
    dx = intersectionPoint1_x - x2;
    dy = intersectionPoint1_y - y2;
    double d1 = Math.sqrt((dy*dy) + (dx*dx));

    dx = intersectionPoint2_x - x2;
    dy = intersectionPoint2_y - y2;
    double d2 = Math.sqrt((dy*dy) + (dx*dx));

    if(Math.abs(d1 - r2) < res) {
        Log.d("INTERSECTION Circle1 AND Circle2 AND Circle3:", "(" + intersectionPoint1_x + "," + intersectionPoint1_y + ")");
    }
    else if(Math.abs(d2 - r2) < res) {
        Log.d("INTERSECTION Circle1 AND Circle2 AND Circle3:", "(" + intersectionPoint2_x + "," + intersectionPoint2_y + ")"); //here was an error
    }
    else {
        Log.d("INTERSECTION Circle1 AND Circle2 AND Circle3:", "NONE");
    }
    return true;
}
L'ho trovato cercando "intersection of 3 circles"...
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Avatar utente
Lord Of Destruction
Membro d'elite
Messaggi: 1161
Iscritto il: 02/06/2009, 11:48
Specialità: Grafico-Progammatore
Località: Vault 101
Contatta:

Re: calcolo posizione

Messaggio da Lord Of Destruction »

cp94 ha scritto:Ma questo sistema funziona ancora anche se (x1,y1) sono fuori dal triangolo (x2,y2)(x3,y3)(x4,y4) ?
Mmm se ho capito che intendi sì ;D
Immagine veloce fatta in ps
Immagine
in celeste ho fatto tutti i possibili punti che puoi avere: con una sola equazione, hai un'intera circonferenza. Con due equazioni, hai fino a 2 punti distinti. Con 3 equazioni, ne hai 1.
(per "punti" intendo ovviamente le soluzioni che soddisfano il sistema formato da quelle equazioni)
Come vedi, S è (ovviamente XD) contenuto sia nel primo, che nel secondo, che nel terzo caso... ma solo nel terzo caso è l'unico punto che soddisfa il sistema (ovvero quando con 3 equazioni)

Avatar utente
pacmino
GMI Guru
Messaggi: 2569
Iscritto il: 03/06/2009, 16:38
Specialità: Scazzato cronico
Uso: GM:Studio 2
Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
Contatta:

Re: calcolo posizione

Messaggio da pacmino »

ma io ho capito semplicemente che lui ha le coordinate di tre vertici A(,x,y) B(x,y) C(x,y) e conosce la distanza del punto P da ogni vertice, lui vuole sapere le coordinate di P (x,y)

la mia domanda era come fa a sapere la distanza tra A e P, tra B e P, e tra C e P se non conosce già le coordinate di P

se usa il comando distance to point è vero che gli passa solo le coordinate di destinazione ma Game maker conosce la x e la y di partenza ovvero le coordinate dell'oggetto che chiama il comando
Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 151 ospiti