Switch to full style
Todas as dúvidas que tiver sobre Trigonometria (ângulos, senos, cosenos, tangentes, etc.), Geometria Plana, Geometria Espacial ou Geometria Analítica
Responder

Segmento de reta tangenciando caminho

11 fev 2020, 17:56

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
Anexos
Problema.gif
Gif exemplificando o problema
Problema.gif (148.56 KiB) Visualizado 181 vezes

Re: Segmento de reta tangenciando caminho

22 mar 2020, 18:59

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()
Responder