Fórum de Matemática | DÚVIDAS? Nós respondemos! https://forumdematematica.org/ |
|
Segmento de reta tangenciando caminho https://forumdematematica.org/viewtopic.php?f=23&t=14267 |
Página 1 de 1 |
Autor: | FBO [ 11 fev 2020, 17:56 ] | ||
Título da Pergunta: | Segmento de reta tangenciando caminho | ||
Olá amigos. Tenho um problema que é o seguinte: Tenho um caminho que é composto de uma reta horizontal unida a um arco de 90º e depois unido a uma reta vertical. Como exemplo: - reta de comprimento 800mm coordenadas P1(0,0) P2(800,0) - arco com ângulo inicial 270º e ângulo final 360º, raio 50 coordenadas P1(800,0) P2(850,50) Centro(800,50) - reta de comprimento 800mm coordenadas P1(850,50) P2(850, 850) Sobre este caminho percorre um segmento de reta de 100mm de comprimento, de centro C pontos P1 e P2, que ao percorrer o caminho, mantém sempre seus pontos P1 e P2 conectados ou tangenciando o caminho. o........x.........o P1 C P2 [Veja o GIF em anexo para visualizar o que deve acontecer - em branco é o caminho e em vermelho o segmento de reta que percorre o caminho] O problema é que tenho que calcular a coordenada do centro C do segmento de reta e sua rotação (ângulo de inclinação) de modo que seus pontos P1 e P2 fiquem sempre tangenciando o caminho (ou calcular as coordenadas P1 e P2, sei lá)... Podem dar uma luz? Muito obrigado
|
Autor: | Fraol [ 22 mar 2020, 18:59 ] |
Título da Pergunta: | Re: Segmento de reta tangenciando caminho |
Olá, vou tentar ajudar, se é que entendi o problema. O segmento vermelho tem extremidades P1=(x1,y1) e P2=(x2,y2). Para 0 <= x <= 800, temos: x1 = x-100 x2 = x y1 = y2 = 0 Para 800 < x <= 850, temos: A posição de P2 é: x2 = x y2 = 50 - raiz_quad(50^2 - (x2-800)^2) # ajustado para subir de 0 até 50 A posição de P1, nesse intervalo, é tal que: P1=(x1, 0) e a distância a P2 é igual a 100: 100 = raiz_quad((x2-x1)^2 + y2^2) Como sabemos o valor de x2 e y2 obteremos x1. Quando x2 chegar em 850, estaciona, y2 crescerá a partir de 50. Quando y2 chegar em 87, x1 terá chegado em 800. Daí, y1 passa a obedecer a expressão: y1 = 50 - raiz_quad(50^2 - (x1-800)^2) # ajustado para subir de 0 até 50 Com isso dá para calcular o centro = (P1+P2)/2, coordenada a coordenada. A inclinação do segmento é a tangente (y2-y1)/(x2-x1). Com isso consegue o ângulo. Se ficou complicado, posta aí pra gente ir discutindo as partes. Eu, até fiz um código em Python para o posicionamento de todos os P2 para 0 <= x2 <= 850, veja: Código: import numpy as np
import matplotlib.pyplot as plt def f(X): Y = np.zeros(100) i = -1 for x in X: i = i + 1 if x < 800: Y[i] = 0 else: Y[i] = 50 - np.sqrt(50**2 - (x-800)**2) return Y X = np.linspace(0,849, 100) Y = f(X) plt.axis('equal') plt.plot(X,Y) plt.show() |
Página 1 de 1 | Os Horários são TMG [ DST ] |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |