pessoal, como posso identificar o ângulo de um triângulo retângulo impresso em uma imagem digital??
Identificar ângulo
12 Respostas
O ângulo é 90º 
Sério, por que é que você precisa disso?
Seu problema são dois. hehehe
Passo 1:
Ler a imagem e conseguir transformar as hastes do triângulo em vetores. (bem difícil, dependendo da imagem).
Tem algum exemplo de imagem pra postar aqui?
Passo 2:
Identificar o ângulo formado entre dois vetores (moleza).
O ângulo é 90º![]()
Sério, por que é que você precisa disso?
putz… falei bobagem, hehehehe
na verdade não é só triangulo retangulo, é apenas um triangulo… e tenho que identificar o angulo do vértice dele… só que ele esta impresso na imagem, tenho que fazer a leitura da imagem e depois dizer o angulo do seu vértice…
O ângulo é 90º![]()
Sério, por que é que você precisa disso?
putz… falei bobagem, hehehehe
na verdade não é só triangulo retangulo, é apenas um triangulo… e tenho que identificar o angulo do vértice dele… só que ele esta impresso na imagem, tenho que fazer a leitura da imagem e depois dizer o angulo do seu vértice…
Um triângulo tem 3 ângulos e 3 vértices. De qualquer maneira, seus problemas são:
- Achar as linhas na imagem
- Identificar os polígonos
- Determinar os ângulos.
Dificilmente haverá apenas um triângulo na sua imagem. O mais chato é que você tem o seguinte problema: se a aresta do seu polígono for muito grossa, você tem ainda outro problema.
Seu problema são dois. hehehePasso 1:
Ler a imagem e conseguir transformar as hastes do triângulo em vetores. (bem difícil, dependendo da imagem).
Tem algum exemplo de imagem pra postar aqui?
Passo 2:
Identificar o ângulo formado entre dois vetores (moleza).
aqui tem um exemplo da imagem, só sem o valores…

só não entendei a parte que voce falou de angulo de dois vetores???
Um triângulo tem 3 ângulos e 3 vértices. De qualquer maneira, seus problemas são:
- Achar as linhas na imagem
- Identificar os polígonos
- Determinar os ângulos.
Dificilmente haverá apenas um triângulo na sua imagem. O mais chato é que você tem o seguinte problema: se a aresta do seu polígono for muito grossa, você tem ainda outro problema.
a imagem, terá 1 pixel de expessura…
para achar as linhas… já consegui, elaborei um método, com o get pixel… e ele joga os valores pra dentro de uma matriz[][]…
os poligonos que não sei como identificar…
e tb determinar o ângulo tb não sei…
Aí você precisa de um pouco de trigonometria (senos e cosenos). Você aprendeu isso no ensino médio?
Dica: o Java já tem um método que lhe permite determinar o ângulo, a partir de coordenadas. O método é “Math.atan2 (double y, double x)”.
Se for uma imagem como essa, é bem mais fácil pedir pro usuário digitar o tamanho dos lados e o programa retornar o valor de X.
Caso você realmente tenha que achar o triângulo na imagem pra fazer o cálculo, procure sobre visão computacional e detecção de bordas.
Vou ver se penso em alguma coisa e posto aqui mais tarde.
Boa sorte.
Dê uma olhada.
class Ponto {
public double x;
public double y;
public Ponto (double x, double y) { this.x = x; this.y = y; }
}
class Angulos {
public static double calcularAngulo (Ponto p1, Ponto p2, Ponto p3) {
Ponto p1t = new Ponto (p1.x - p2.x, p1.y - p2.y);
Ponto p3t = new Ponto (p3.x - p2.x, p3.y - p2.y);
double alfa = Math.atan2 (p1t.y, p1t.x);
double beta = Math.atan2 (p3t.y, p3t.x);
return alfa - beta;
}
public static double[] calcularAngulos (Ponto... pontos) {
if (pontos.length < 3) {
return new double[0];
}
double[] angulos = new double[pontos.length];
int i;
for (i = 0; i < pontos.length - 2; ++i) {
angulos[i] = calcularAngulo (pontos[i], pontos[i+1], pontos[i+2]);
}
angulos[i] = calcularAngulo (pontos[i], pontos[i+1], pontos[0]);
i++;
angulos[i] = calcularAngulo (pontos[i], pontos[0], pontos[1]);
return angulos;
}
public static void main (String[] args) {
double[] angulos = calcularAngulos (new Ponto (0, 0), new Ponto (1, 0), new Ponto (0.5, Math.sqrt
(3.0) / 2));
for (int i = 0; i < angulos.length; ++i) {
System.out.printf ("%.2f graus %n", Math.toDegrees (angulos[i]));
}
}
}
O código que postei requer que você tenha determinado as coordenadas dos vértices (no exemplo dado, um triângulo equilátero. ). Como é que você determina as coordenadas dos vértices fica por sua conta.
Aí você precisa de um pouco de trigonometria (senos e cosenos). Você aprendeu isso no ensino médio?Dica: o Java já tem um método que lhe permite determinar o ângulo, a partir de coordenadas. O método é “Math.atan2 (double y, double x)”.
consegui fazer o seguinte:
na imagem, consegui identificar as coordenadas x,y das extremidades do triangulo (os vértices)
assim: jogo o valor da imagem em uma matriz, e procuro o ponto mais extremo dele… então assim eu consigo ter acesso aos pontos, ou seja, os valor da linha e coluna em X e Y, terei 3 pontos. Vertice1 [x][y], vertice2[x][y] e vertice3[x][y];
vou tentar com seu código, pra ver se funciona e depois posto aqui…
Dê uma olhada.entanglement, muito obrigado mesmo cara... vo ter que citar teu nome nos agradecimentos, rsrsrs só desculpa minha burrice, mas preciso entender bem seu código. Na linha:class Ponto { public double x; public double y; public Ponto (double x, double y) { this.x = x; this.y = y; } } class Angulos { public static double calcularAngulo (Ponto p1, Ponto p2, Ponto p3) { Ponto p1t = new Ponto (p1.x - p2.x, p1.y - p2.y); Ponto p3t = new Ponto (p3.x - p2.x, p3.y - p2.y); double alfa = Math.atan2 (p1t.y, p1t.x); double beta = Math.atan2 (p3t.y, p3t.x); return alfa - beta; } public static double[] calcularAngulos (Ponto... pontos) { if (pontos.length < 3) { return new double[0]; } double[] angulos = new double[pontos.length]; int i; for (i = 0; i < pontos.length - 2; ++i) { angulos[i] = calcularAngulo (pontos[i], pontos[i+1], pontos[i+2]); } angulos[i] = calcularAngulo (pontos[i], pontos[i+1], pontos[0]); i++; angulos[i] = calcularAngulo (pontos[i], pontos[0], pontos[1]); return angulos; } public static void main (String[] args) { double[] angulos = calcularAngulos (new Ponto (0, 0), new Ponto (1, 0), new Ponto (0.5, Math.sqrt (3.0) / 2)); for (int i = 0; i < angulos.length; ++i) { System.out.printf ("%.2f graus %n", Math.toDegrees (angulos[i])); } } }
double[] angulos = calcularAngulos (new Ponto (0, 0), new Ponto (1, 0), new Ponto (0.5, Math.sqrt (3.0) / 2));