calcolo posizione
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
calcolo posizione
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?
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?
- 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
come fai a conoscere la distanza tra te e un vertice se non hai le tue coordinate?
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: calcolo posizione
Ti spiego meglio quello che voglio fare:pacmino ha scritto:come fai a conoscere la distanza tra te e un vertice se non hai le tue coordinate?
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
- 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
Ho capito che non ti serve più... Però visto che mi ha incuriosito sta cosa potresti spiegarti meglio, che non ho capito nulla?
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: calcolo posizione
In poche parole: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?
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
- 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
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?
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: calcolo posizione
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
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
- 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
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
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
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: calcolo posizione
Volevo dire vettore direzione*distanza, comunque questo denota le mie conoscenze in matematica ahaha
Comunque grazie, eccola li la formulina che non mi ricordavo!
Comunque grazie, eccola li la formulina che non mi ricordavo!
Re: calcolo posizione
Sei sicuro che non serva? Essendo equazioni di secondo grado, potrebbero esserci più soluzioni alle prime due.Lord Of Destruction ha scritto:[latex](d_3^2=(x_4-x_1)^2+(y_4-y_1)^2) questa-non-ti-serve[/latex]
Re: calcolo posizione
Spiegati meglio con un immagine per favore, perché non ho realmente capito l'incognita del problema.
Sembra che la soluzione sia nei dati.
Nel caso per "magia" tu avessi solamente un vettore che parte dal vertice ed è direzionato verso il player (come hai scritto qui sopra).
Sembra che la soluzione sia nei dati.
E questo mi sembra ok.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,
Come calcoli/ottieni questa distanza? (come puoi capire, il problema si auto-risolve in questo caso, dato che sostanzialmente usi pitagora)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
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
-
- GMI Advanced
- Messaggi: 2093
- Iscritto il: 19/12/2010, 16:17
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Contatta:
Re: calcolo posizione
Praticamente hai la posizione dei 3 vertici e le distanze di questi vertici dal punto della posizione... e tu vorresti calcolare questa posizione?
Una cosa tipo questa (Immaginando che la posizione sia dentro al triangolo ABC)?
Una cosa tipo questa (Immaginando che la posizione sia dentro al triangolo ABC)?
♥♥♥♥♥♥
♥♥♥♥♥♥
♥♥♥♥♥♥
Spoiler
- 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
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.Nix ha scritto:Sei sicuro che non serva? Essendo equazioni di secondo grado, potrebbero esserci più soluzioni alle prime due.Lord Of Destruction ha scritto:[latex](d_3^2=(x_4-x_1)^2+(y_4-y_1)^2) questa-non-ti-serve[/latex]
Re: calcolo posizione
In quella immagine non ci sono soluzioni.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?
Una cosa tipo questa (Immaginando che la posizione sia dentro al triangolo ABC)?
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
ma c'è un intersezione tra le 3 contemporaneamente
Per essere corretto, dovrebbe essere così:
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: calcolo posizione
Ma questo sistema funziona ancora anche se (x1,y1) sono fuori dal triangolo (x2,y2)(x3,y3)(x4,y4) ?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
Spoiler
-
- GMI Advanced
- Messaggi: 2093
- Iscritto il: 19/12/2010, 16:17
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Contatta:
Re: calcolo posizione
E' proprio quello che intendevo...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
ma c'è un intersezione tra le 3 contemporaneamente
Per essere corretto, dovrebbe essere così:
♥♥♥♥♥♥
♥♥♥♥♥♥
♥♥♥♥♥♥
Spoiler
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: calcolo posizione
Ma come faccio a tradurlo in codice in modo che abbia unSolid Snake ha scritto:E' proprio quello che intendevo...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 questoSpoilerma c'è un intersezione tra le 3 contemporaneamente
Per essere corretto, dovrebbe essere così:
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
-
- GMI Advanced
- Messaggi: 2093
- Iscritto il: 19/12/2010, 16:17
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Standard
- Contatta:
Re: calcolo posizione
Prova traducendo questo:
L'ho trovato cercando "intersection of 3 circles"...
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;
}
♥♥♥♥♥♥
♥♥♥♥♥♥
♥♥♥♥♥♥
Spoiler
- 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
Mmm se ho capito che intendi sì ;Dcp94 ha scritto:Ma questo sistema funziona ancora anche se (x1,y1) sono fuori dal triangolo (x2,y2)(x3,y3)(x4,y4) ?
Immagine veloce fatta in ps
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)
- 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
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
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
Chi c’è in linea
Visitano il forum: Nessuno e 151 ospiti