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

Anexos:
Comentário do Ficheiro: Gif exemplificando o problema
Problema.gif
Problema.gif [ 148.56 KiB | Visualizado 6087 vezes ]

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/