0
respostas

Esclarecendo a questão Esquadro #2 de Lógica de Programação II (2)

Como forma de fixar o conhecimento, vou escrever a solução com minhas palavras.

Atividade Esquadro #2

O exemplo pede para montar uma função que desenhe o triângulo preto e o triângulo branco. Sendo que devemos utilizar apenas os pontos A e C para realizar essa tarefa e que o triângulo branco deve ser sempre 2x menor que o triângulo preto.

function desenhaEsquadro(xa, ya, xc, yc, cor) {
    pincel.fillStyle = cor
    pincel.beginPath();
    pincel.moveTo(xa, ya);
    pincel.lineTo(xa, yc);
    pincel.lineTo(xc, yc);
    pincel.fill();

}

A primeira parte do código é tranquila (construção do triângulo preto) pois é apenas no uso das coordenadas em A e C

Já para desenhar o triângulo branco é preciso levar 2 coisas em questão:

  • As medidas de AB (largura e altura);
  • As distâncias entre os pontos do triângulo preto e o dos pontos do triângulo branco.

Atividade Esquadro #2

  • Encontrando os valores em xa:

    Largura AC:

    L = XC - XA = 400 - 50 = 350

    Distância do ponto xa para XA:

    xa - XA = 100 - 50 = 50

    Encontrando a relação entre a distância do ponto xa para XA e a largura AC:

    R = (xa - XA) / (XC - XA) = 50/350 = 1/7

    Assim, ao encontrar a relação entre a distância do ponto xa para XA e a largura AC podemos agora generalizar para qualquer outra medida de triângulo preto que resultará em um ponto triângulo branco com a mesma relação encontrada (1/7).

    xa = XA + ((XC - XA) / R) = XA + ((XC - XA) / 7) = (7XA + (XC - XA)) / 7 = (6XA + XC ) / 7

    xa = (6XA + XC ) / 7

  • Encontrando os valores em xc:

    Largura AC:

    L = XC - XA = 400 - 50 = 350

    Distância do ponto xc para XC:

    xc - XC = 275 - 400 = -125

    Encontrando a relação entre a distância do ponto xc para XC e a largura AC:

    R = (xc - XC) / (XC - XA) = -125/350 = -5/14

    Assim, ao encontrar a relação entre a distância do ponto xc para XC e a largura AC podemos agora generalizar para qualquer outra medida de triângulo preto que resultará em um ponto triângulo branco com a mesma relação encontrada (-5/14).

    xc = XC + ((XC - XA) / R) = XC + (-5(XC - XA) / 14) = (14XC + (-5XC + 5XA)) / 14

    xc = (9XC + 5XA ) / 14

  • Encontrando os valores em ya:

    Altura AC:

    A = YC - YA = 400 - 50 = 350

    Distância do ponto ya para YA:

    ya - YA = 175 - 50 = 125

    Encontrando a relação entre a distância do ponto ya para YA e a altura AC:

    R = (ya - YA) / (YC - YA) = 125/350 = 5/14

    Assim, ao encontrar a relação entre a distância do ponto ya para YA e a altura AC podemos agora generalizar para qualquer outra medida de triângulo preto que resultará em um ponto triângulo branco com a mesma relação encontrada (5/14).

    ya = YA + ((YC - YA) / R) = YA + (5(YC - YA) / 14) = (14YA + (5YC - 5YA)) / 14 = (9YA + 5YC ) / 14 ya = (9YA + 5YC ) / 14

  • Encontrando os valores em yc:

    Altura AC:

    A = YC - YA = 400 - 50 = 350

    Distância do ponto yc para YC:

    yc - YC = 350 - 400 = -50

    Encontrando a relação entre a distância do ponto yc para YC e a altura AC:

    R = (yc - YC) / (YC - YA) = -50/350 = -1/7

    Assim, ao encontrar a relação entre a distância do ponto yc para YC e a altura AC podemos agora generalizar para qualquer outra medida de triângulo preto que resultará em um ponto triângulo branco com a mesma relação encontrada (-1/7).

    yc = YC + ((YC - YA) / R) = YC + (-1(YC - YA) / 7) = (7YC + (-YC + YA)) / 7 = (6YC + YA) / 7

    yc = (6YC + YA) / 7

Assim, por fim, temos o código completo. Lembrando que o ponto b é dado por (xa,yc).

function desenhaEsquadro(xa, ya, xc, yc, cor) {
    pincel.fillStyle = cor
    pincel.beginPath();
    pincel.moveTo(xa, ya);
    pincel.lineTo(xa, yc);
    pincel.lineTo(xc, yc);
    pincel.fill();

    pincel.fillStyle = 'white'
    pincel.beginPath();
    pincel.moveTo((6*xa + xc)/7, (9*ya + 5*yc)/14);
    pincel.lineTo((6*xa + xc)/7, (ya + 6*yc)/7);
    pincel.lineTo((5*xa + 9*xc)/14, (ya + 6*yc)/7);
    pincel.fill();
}