Estou tentando criar uma superfície de toque triangular para iOS, onde o usuário pode arrastar em torno de um ponto dentro desse triângulo. Usando as informações desta página , é fácil descobrir se o ponto arrastado está dentro ou fora do triângulo. No entanto, quero recortar o ponto nas bordas do triângulo se o usuário arrastar para fora do triângulo.
Isso é fácil para o lado AB e o lado AC , porque eu só preciso definir os vetores u ou v como zero, respectivamente, se o dedo do usuário arrastar para fora dessas bordas. No entanto, não sei como encontrar o ponto p, no lado BC. Preciso encontrar esse ponto de interseção se o usuário arrastar o dedo para fora da borda BC .
Respostas:
Todos os pontos na borda BC têm a propriedade que | u | + | v | = 1. Reduzir a magnitude do vetor mais longo para que essa propriedade seja verdadeira obterá seu ponto de interseção. Na sua foto, isso significaria reduzir a magnitude de v em 0,245764829343853. Isso só funciona se sua linha de A ao dedo cruzar BC.
fonte
Supondo que você tenha coordenadas para A, B e C (que chamaremos de Ax, Ay etc.) e D = u + v, o ponto de interseção é:
Veja também o artigo da Wikipedia sobre interseção linha-linha .
fonte