Welcome to Stratos!
A | C-------P | | B P / / A <--- aquí el punto C es igual a A | | | B
N.x = B.x - A.xN.y = B.y - A.yfloat l=sqrt(N.x *N.X + N.y*N.y);if(l>0.0f){ N.x/=l;N.y/=l;}float a = N.x*A.x + N.y*A.y;float b = N.x*B.x + N.y*B.y;float c = N.x*P.x + N.y*P.y;if(c<a) return A;if(c>b) return B;C.x = A.x + N.x *c;C.y = A.y + N.y *c;return C;
Código: [Seleccionar]N.x = B.x - A.xN.y = B.y - A.yfloat l=sqrt(N.x *N.X + N.y*N.y);if(l>0.0f){ N.x/=l;N.y/=l;}float a = N.x*A.x + N.y*A.y;float b = N.x*B.x + N.y*B.y;float c = N.x*P.x + N.y*P.y;if(c<a) return A;if(c>b) return B;C.x = A.x + N.x *c;C.y = A.y + N.y *c;return C;
Al menos usa google antes de ir con tus dudas a los demás
N.x = B.x - A.xN.y = B.y - A.yN.z = B.z - A.zfloat a = N.x*A.x + N.y*A.y + N.z*A.z;float b = N.x*B.x + N.y*B.y + N.z*B.z;float c = N.x*P.x + N.y*P.y + N.z*P.z;if(c<a) return A;if(c>b) return B;float ac = (c-a) / (b-a);C.x = A.x + N.x *ac;C.y = A.y + N.y *ac;C.z = A.z + N.z *ac;return C;
N = B - A;float a = N.Punto(A);float b = N.Punto(B);float c = N.Punto(C);if(c<a) return A;if(c>b) return B;float ac = (c-a) / (b-a);C = A + N * ac;return C;