Ir ao conteúdo

Posts recomendados

Postado

muito obrigado. mas me falta 1 informação: "Definiremos as coordenadas dos pontos pertencentes à reta por meio das incógnitas x e y (se a reta pertencer a um espaço de duas dimensões), que se relacionam entre si pela equação. Caso a equação pertença a um espaço de três dimensões, usaremos as incógnitas x, y e z."

qual é a forma de obter a equação em 3D?

  • Curtir 1
Postado

@Cambalinho  para trabalhar em 3d, precisa usar o sistema vetorial.

 

Tem o artigo abaixo para uma orientação; só que o buraco é um pouco mais embaixo, isto não é conteúdo de ensino médio. Sugiro buscar algum livro de geometria analítica, pois a utilização de vetores exige uma teoria um pouco mais extensa que precisa ter como base, senão não entenderá os conceitos.

 

http://www.professorluisbarbosa.com.br/uploads/2/6/6/5/26650629/aula_7_equacao_da_reta_e_do_plano.pdf

 

 

  • Curtir 1
  • Amei 1
Postado

desculpa, mas eu só tenho o 12º ano... e talvez tenha razão....
além disso estou com dificuldade em acompanhar o manual...
a 2D percebo bem... mas a 3D ainda me deixa confuso: o que é o 't'?

adicionado 31 minutos depois

muito obrigado pelos manuais.. e com a sua ajuda consegui fazer a pesquisa certa e encontrei 1 video que me ajuda e muito:

 

muito obrigado por tudo

  • Curtir 1
  • 2 semanas depois...
Postado

finalmente consegui criar 1 função em VB6 para calcular o ponto da recta:
 

Private Function GetLinePosition(Origin As Position3D, Destiny As Position3D, ActualPosition As Double, Optional WhatCoordenate As Coordenates = Z) As Position3D
    
    'Getting the AB vector(B-A or Destiny-Origin):
    Dim AB As Position3D
    AB.X = Destiny.X - Origin.X
    AB.Y = Destiny.Y - Origin.Y
    AB.Z = Destiny.Z - Origin.Z
    
    Dim NewPosition As Position3D
    Dim T As Double
    'depending on player movement(for get 1 coordenate and the T), we get the point coordenate:
    If (WhatCoordenate = X) Then
        'X = Ax + T
        'T = Ax-X
        T = Origin.X - ActualPosition
        NewPosition.X = ActualPosition
        NewPosition.Y = Origin.Y + AB.Y * T
        NewPosition.Z = Origin.Z + AB.Z * T
    ElseIf (WhatCoordenate = Y) Then
        'Y = Ay + T
        'T = Ay-Y
        T = Origin.Y - ActualPosition
        NewPosition.Y = ActualPosition
        NewPosition.X = Origin.X + AB.X * T
        NewPosition.Z = Origin.Z + AB.Z * T
    ElseIf (WhatCoordenate = Z) Then
        'Z = Az + T
        'T = Az-Z
        T = Origin.Z - ActualPosition
        NewPosition.Z = ActualPosition
        NewPosition.X = Origin.X + AB.X * T
        NewPosition.Y = Origin.Y + AB.Y * T
    End If
    GetLinePosition = NewPosition
End Function

o X, Y ou Z são obtidos dependendo do movimento do jogador(esquerda-direita ou atrás e frente).
eu não tenho como testar esta função se está correcta... só obtenho os resultados quando a figura é desenhada.
eu obtenho resultados inesperados... podes me tentar ver a função para ver se me enganei?

  • Curtir 1
Postado

esta função tem alguns erros de calculos, mas já a editei:

Private Function GetLinePosition(Origin As Position3D, Destiny As Position3D, ActualPosition As Double, Optional WhatCoordenate As Coordenates = Z) As Position3D
    
    'Getting the AB vector(B-A or Destiny-Origin):
    Dim AB As Position3D
    AB.X = Destiny.X - Origin.X
    AB.Y = Destiny.Y - Origin.Y
    AB.Z = Destiny.Z - Origin.Z
    
    Dim NewPosition As Position3D
    Dim T As Double
    'depending on player movement(for get 1 coordenate and the T), we get the point coordenate:
    If (WhatCoordenate = X) Then
        'P.x = O.x + t*AB.x
        't = (P.x - O.x) / AB.x
        T = (ActualPosition - Origin.X) / AB.X
        NewPosition.X = ActualPosition
        NewPosition.Y = Origin.Y + AB.Y * T
        NewPosition.Z = Origin.Z + AB.Z * T
    ElseIf (WhatCoordenate = Y) Then
        'P.y = O.y + t*AB.y
        't = (P.y - O.y) / AB.y
        T = (ActualPosition - Origin.Y) / AB.Y
        NewPosition.Y = ActualPosition
        NewPosition.X = Origin.X + AB.X * T
        NewPosition.Z = Origin.Z + AB.Z * T
    ElseIf (WhatCoordenate = Z) Then
        'P.z = O.z + t*AB.z
        't = (P.z - O.z) / AB.z
        T = (ActualPosition - Origin.Z) / AB.Z
        NewPosition.Z = ActualPosition
        NewPosition.X = Origin.X + AB.X * T
        NewPosition.Y = Origin.Y + AB.Y * T
    End If
    GetLinePosition = NewPosition
End Function

muito obrigado

Postado

T1000_2015: como posso evitar a divisão por zero?

eu posso fazer isto:
 

If (WhatCoordenate = X) Then
        'P.x = O.x + t*AB.x
        't = (P.x - O.x) / AB.x
        if(AB.x=0) then 
           T=1
        else
           T = (ActualPosition - Origin.X) / AB.X
        end if

eu meti igual a '1', mas neste caso, o que devo meter?

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...