Raised This Month: $51 Target: $400
 12% 

Ecuación. Recta que corta al plano.


  
 
 
Thread Tools Display Modes
fearAR
Veteran Member
Join Date: Oct 2010
Old 01-06-2013 , 21:00   Re: Ecuación. Recta que corta al plano.
#11

Gracias neeel, ya lo habia visto, pero como dijistes, es estatico y utiliza la verificacion de mins/maxs, por lo tanto no me sirve, igual gracias.

Ok, te espero gladius.

Saludos.
__________________
~~~~ NPC AI ~~~~

[ Pathfinding - OK ]
[ Citizen AI - OK ]
[ Handle Weapons - --- ]
fearAR is offline
Send a message via MSN to fearAR
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 01-06-2013 , 21:33   Re: Ecuación. Recta que corta al plano.
#12

No me he podido conectar aun no llego a mi casa , pero hoy si te dejare una posible solucion
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).

gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 01-07-2013 , 17:31   Re: Ecuación. Recta que corta al plano.
#13

FearAR tengo unas preguntas.

Cómo haces el cubo, a partir de que lo formas?, conoces la ubicación de los 8 puntos?, conoces cuánto mide la arista?, el cubo es dinámico puede rotar hacia cualquier lado y tener diferentes dimensiones?.

No es necesaria la normal si la diagonal es en la misma cara(un cuadrado). Usando la normal puedes sacar la diagonal del cubo y posterior a eso calculas la distancia al centro para obtener el punto central del cubo, luego, realizas 6 líneas hacia los lados del cubo (Serían el punto central de cada cara) y finalmente trazas desde cada uno de esos 6 puntos las líneas para formar las caras y el cubo en sí. Para saber si un player está dentro mmm puedes hacer que la entidad sea solida(no hueca) y detectar con touch si está tocando el cubo, hay otro método conociendo los 8 puntos voy a tratar de resolverlo para pawn y te digo.
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).


Last edited by gladius; 01-07-2013 at 17:32.
gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
fearAR
Veteran Member
Join Date: Oct 2010
Old 01-07-2013 , 21:08   Re: Ecuación. Recta que corta al plano.
#14

Mira para manejar todas las propiedades del cubo me manejo con 2 variables diferentes.

Una que guarda el origen, osea el punto central desde donde arranca el cubo.

Y otra que guarda por así decirlo, un offset de cada cada esquina con respecto a su origen.

Ejemplo yo creo un cubo, toma mi origen, y en la variable f_vCuboOrigin[ 3 ], guarda el origen.

Y luego por defecto los primeros offsets son:

PHP Code:
/* Z_AXIS, esta referido al superior e inferior ( Claro que esto es visible solo en el primer caso, luego si el cubo es girado en cualquiera de sus ejes euclideanos Pitch,yaw,roll, puede variar, y el inferior pasar a ser superior, pero yo lo sigo tomando como siempre, es simplemente una referencia, no le hagas mucho caso */
new const Float:fCube_defaultZ_AXIS ][ ][ ] =
{
    {
        { -
5.0, -5.0, -5.0 },
        { 
5.0, -5.0, -5.0 },
        { 
5.05.0, -5.0 },
        { -
5.05.0, -5.0 }
    },
    {
        { -
5.0, -5.05.0 },
        { 
5.0, -5.05.0 },
        { 
5.05.05.0 },
        { -
5.05.05.0 }
    }
}; 
Para girarlo tomo todos los offset y los giro en relacion a su origen, con unos stock, para cada condicion, eso anda perfecto, tambien puedo controlar el ancho, alto, y profundo, y moverlo en los ejes X,Y,Z, y/o transladarlo a un diferente origen.

En cuanto a lo del touch, no lo puedo utilizar, una entidad es estatica, y en el momento de colisionar me lo tomaria con un angulo { 0.0, 0.0, 0.0 }, estaria descartando posibilidades, y tomando otras que no me sirven. Utilizo este metodo, porque lei que es el que utilizan dentro de la colision con caras, al momento de trabajar con objetos relacionados a meshes, por ello estaba utilizando un algoritmo basado en el Algoritmo de trazado de rayos, solo que transladado a un plano 3D y no 2D, no es dificil, si se puede saber si una linea colisiona/atravieza/intersecta con un plano 3D, ya esta todo listo.

El trazado de rayos, esta diseñado para figuras irregulares, tanto como regulares, por ello es muy bueno, lo unico que hay que hacer, es trazar una linea desde un origen hasta su otro punto, y para saber si el punto esta dentro de la figura ( poligono, cuadrado, triangulo, etc ), se debe tomar en cuenta todos sus lados, es por ello, que si se produce interseccion en un numero par de lados, el punto se encuentra fuera, y si se produce en un numero impar, esta dentro.

Saludos.

PD: Disculpa el retraso, recien me siento frente al PC.

Edit:
Creo que se como solucionar el problema.

Lo que pasa es que yo estoy verificando si el segmento ( aiming origin - origin player ), esta colisionando con el plano ( el plano esta contenido por infinitos puntos ), hasta ahi vamos bien, pero yo ademas de hacer eso que es hasta ahora lo q tengo, deberia verificar si el punto de interseccion se encuentra dentro de la face, osea triangulo.

Estuve buscando y voy a aplicarlos, si alguien quiere interesarse y trasladar el pseudocodigo, o ecuación algebraica a PAWN, y postearlo aquí no hay problema.

Saludos.

PD: Aviso cuando termine si me funco.

Edit2:
Lo logre

Improvisé este STOCK, viendo una función que usaban en C#.
Esta basada en las "Coordenadas Baricéntricas".
PHP Code:
stock Float:dotFloat:u], Float:v] )
{    
    return ( 
u] * v] + u] * v] + u] * v] );
}

stock in_triangleFloat:A], Float:B], Float:C], Float:P] )
{
    new 
Float:v0], Float:v1], Float:v2];
    
    
xs_vec_subCAv0 );
    
xs_vec_subBAv1 );
    
xs_vec_subPAv2 );

    
// Compute dot products
    
new Float:dot00 dot(v0v0)
    new 
Float:dot01 dot(v0v1)
    new 
Float:dot02 dot(v0v2)
    new 
Float:dot11 dot(v1v1)
    new 
Float:dot12 dot(v1v2)

    
// Compute barycentric coordinates
    
new Float:invDenom / (dot00 dot11 dot01 dot01)
    new 
Float:= (dot11 dot02 dot01 dot12) * invDenom
    
new Float:= (dot00 dot12 dot01 dot02) * invDenom

    
// Check if point is in triangle
    
return (>= 0) && (>= 0) && (1);

Luego lo demas esta basado como dije antes, no cambie nada, lo unico que hice fue obtener el valor del escalar del vector director, en caso que colisione con alguno de los planos relacionados al cubo.

Luego lo unico que hago, cuando colisiona, y si el escalar esta entre el rango 0.0 a 1.0, y no pasa de ese rango, continuo verificando, esa cara/face de 3 vertices, osea un triangulo y si el punto obtenido por ( V0 + ( vectorDirector * t ) ) al momento de la colisión con el plano, esta dentro de esos 3 vertices, significa que atravieza una de las caras del cubo.

Saludos.
__________________
~~~~ NPC AI ~~~~

[ Pathfinding - OK ]
[ Citizen AI - OK ]
[ Handle Weapons - --- ]

Last edited by fearAR; 01-08-2013 at 04:18.
fearAR is offline
Send a message via MSN to fearAR
Old 01-08-2013, 00:17
fearAR
This message has been deleted by fearAR.
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 01-08-2013 , 10:36   Re: Ecuación. Recta que corta al plano.
#15

Trabajar en 2D y 3D es bien diferente, para traspasar las cosas debes aplicar mucho de Geometría Vectorial.

Primero necesito más detalles porque no entendí muy bien.

Cual es la finalidad del cubo detectar entidades que estén adentro?, Detectar cuando tocan el cubo(Perimetro)?, Para rotarlo no puedes usar los ángulos en vez de cambiar por puntos?, No entendí tu explicación de por qué no se puede usar touch, intentaste?

Leyendo los edit quizás algunas preguntas de las anteriores no van al caso, tengo nuevas preguntas. Porque ahora hablas de detectar una entidad producida entre el aim del player y el player.

Que mierda estás queriendo detectar jajajaja, una línea(recta) entre el player y donde está mirando?, si está mirando más allá del cubo pero a travez del cubo no pasa nada?, si está mirando dentro del cubo que si haga algo y si mira la cara del cubo(me imagino que tangencialmente que no mire adentro solo el borde).

No entendí lo de
Quote:
... pero yo ademas de hacer eso que es hasta ahora lo q tengo, deberia verificar si el punto de interseccion se encuentra dentro de la face, osea triangulo.
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).


Last edited by gladius; 01-08-2013 at 10:38.
gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
DJHD!
Veteran Member
Join Date: Dec 2009
Location: Santiago, Chile
Old 01-08-2013 , 11:18   Re: Ecuación. Recta que corta al plano.
#16

@fearAR Podríamos decir que ya lo conseguiste?

Solucionado?
__________________
Quote:
Originally Posted by XINLEI View Post
Porque rocccos trata de ser el metalicross que nunca va a poder ser.

Last edited by DJHD!; 01-08-2013 at 11:19.
DJHD! is offline
Send a message via MSN to DJHD!
Neeeeeeeeeel.-
Some Guy Yellin'
Join Date: Jul 2010
Location: Argentina
Old 01-08-2013 , 21:38   Re: Ecuación. Recta que corta al plano.
#17

Quote:
Originally Posted by DJHD! View Post
@fearAR Podríamos decir que ya lo conseguiste?

Solucionado?
Quote:
Originally Posted by fearAR View Post
Edit:
Creo que se como solucionar el problema.

Edit2:
Lo logre
__________________
Neeeeeeeeeel.- is offline
Send a message via Skype™ to Neeeeeeeeeel.-
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 10:01.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode