Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

187
Visualizações
¿Por qué mi código de intersección de líneas no detecta los límites más cercanos para los siguientes límites?

Estoy tratando de hacer un algoritmo de emisión de rayos usando p5.js (no muy eficientemente) y tengo configurada casi toda la colisión. Lanzo un rayo hacia el borde de cada límite (todavía tengo que codificar el rayo que va más allá del borde del límite), y funciona perfectamente . Entonces, mi único problema es que los rayos, obviamente, a veces atraviesan otros límites. Entonces, hice un bucle for que pasa por cada límite y arroja un rayo en el mismo ángulo que tenía antes. Si hay una intersección, devuelvo la magnitud del rayo. Si no, devuelvo Infinity. A continuación, encuentro el índice del valor mínimo en la matriz, que parece funcionar. Esto significa que cualquiera que sea el índice del valor mínimo, es el índice del límite con el que quiero calcular una intersección. El código de la función es el siguiente:

 //a = ray position x, b = ray position y, c = ray position + ray direction x, d = ray position + ray direction y //the array bounds is array of Bound objects //intersect() calculates if a ray and a line segment intersect and if so returns a vector with intersection point, otherwise returns vector of 0, 0 function findShortest(a, b, c, d) { shortestPossibilities = []; for(var i = 0; i < bounds.length; i ++) { if(intersect(a, b, c, d, bounds[i].x1, bounds[i].y1, bounds[i].x2, bounds[i].y2).mag() !== 0) { //add magnitude of intersection sPoss.push(intersect(a, b, c, d, bounds[i].x1, bounds[i].y1, bounds[i].x2, bounds[i].y2).mag()); } else { //impossible to be smallest sPoss.push(Infinity); } } //find smallest value var minVal = Math.min(...sPoss); var indexOfVal = sPoss.indexOf(minVal); return indexOfVal; }

Sin embargo, esto no funciona. Traté de ver por qué no funcionaba asignando a cada límite un nuevo color ([0] = blanco, 1 = gris, [2] = naranja, [3] = amarillo, [4] = verde, [5] = cian, [6] = azul, [7+] = púrpura). Parece que encontrar el límite más cercano solo funciona si el límite más cercano tiene un índice más bajo que el límite original al que apuntaba el rayo, como se ve: ingrese la descripción de la imagen aquí

¿Alguien sabe qué hice mal?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda