// distancia entre o ponto P e a reta formada pelos pontos Q e R // d = ||QP x QR|| / ||QR|| double distPontoReta(double P[], double Q[], double R[]) { // vetor v da reta R double v[3]; vetor(v, Q, R); // vetor w de um ponto de r até P double w[3]; vetor(w, P, Q); // produto vetorial ||QP x QR|| double prod[3]; prodVet(prod, w, v); // retorna ||QP x QR|| / ||QR|| return normaVet(prod) / normaVet(v); }
dVector ortogonalizacao(const dVector u, const dVector v) { double escalar = produtoEscalar(u, v) / produtoEscalar(v, v); dVector vetor(u.size()); for(int i = 0;i< u.size();i++)vetor[i]=u[i] - escalar*v[i]; return vetor; }
dVector multiplicacaoN1(const dMatrix &m1, const dVector &v2) { dVector vetor (m1[0].size()); for (int i = 0; i < m1.size(); ++i) for (int j = 0; j < m1[0].size(); ++j) vetor[i] += m1[i][j] * v2[j]; return vetor; }
int main() { ler(); vetor(); calcule(); imprime(); return 0; }
// verifica se um segmento de reta intercepta um plano // e, se existir, retorna o ponto de interceptação q int interceptaSegmentoPlano(Ponto a, Ponto b, Plano p, double &t, Ponto &q) { // Compute the t value for the directed line ab intersecting the plane Vetor ab; vetor(ab, a, b); t = (p.d - dotVet(p.n, a)) / dotVet(p.n, ab); // If t in [0..1] compute and return intersection point if (t >= 0.0 && t <= 1.0) { cpVet(q, ab); multPEsc(q, t); somaVet(q, a); return 1; } // Else no intersection return 0; }
int main() { int vet[]={1,2,3,4,5,6,7,8,9,10}; vetor(vet); return 0; }