ACHAR O NUMERO MAIS PROXIMO
Pessoal seguinte:
tenho uma grid com 2 colunas onde armazeno as coordenadas x e y (em cada coluna)
Agora como faço um fórmula para achar as coordenadas mais proxima
exemplo
x |y
10|30
21|40
40|28
estou na coordenada 19, 42, então devo ir na linha 21|40, pois é a mais próxima, mas como achar ela?
Obrigado
tenho uma grid com 2 colunas onde armazeno as coordenadas x e y (em cada coluna)
Agora como faço um fórmula para achar as coordenadas mais proxima
exemplo
x |y
10|30
21|40
40|28
estou na coordenada 19, 42, então devo ir na linha 21|40, pois é a mais próxima, mas como achar ela?
Obrigado
Seu exemplo está confuso com a sua pergunta. Seja mais claro.
Qual o grid? MSFlexgrid?
Cara deixa ver se entendi
x | y
10 | 30
21 | 40
40 | 28
porque não soma x+Y cria uma terceira coluna x^2+y^2
x | y | (x^2+y^2)
10 | 30 | 1000
21 | 40 | 2041 <=====
40 | 28 | 2384
quando for comparar uma coordenada o que se aproximar do valor tipo a sua que vc passou x^2=19, y^2=42 seria 19^2+42^2 = 2125 verá qua a mais proxima que vc passou
é a mais proxima do seu ponto x, y
Veja se esta formula te ajuda
x | y
10 | 30
21 | 40
40 | 28
porque não soma x+Y cria uma terceira coluna x^2+y^2
x | y | (x^2+y^2)
10 | 30 | 1000
21 | 40 | 2041 <=====
40 | 28 | 2384
quando for comparar uma coordenada o que se aproximar do valor tipo a sua que vc passou x^2=19, y^2=42 seria 19^2+42^2 = 2125 verá qua a mais proxima que vc passou
é a mais proxima do seu ponto x, y
Veja se esta formula te ajuda
Caro LVFIOROT não sei como chegou a esta conclusão de calculo errado baseado em qual coordenada calculada
suponhamos a seguinte tabela
x y x^2+y^2
10 !20 500
10 !99 9901
11 !20 521 <===========
no seu estilo de calculo o ponto mais proximo seria o 10!99 porem na verdade o ponto mais proximo e o 11!20... logo esse seu calculo não ta muito certo nao....
Não sei que conta vc fez mas posso garantir que fez errado
Baseado em X^2 + Y^2 o resultado é a coordenada mais proxima
se analisarmos as coordenadas que o colega SERGIOPASCOAL passou sendo x = 19 e y = 42 o resultado é x^2+y^2 = 2125
o resultado tá mais proximo de 9901 ou de 521
então o a coordenada mais proxima é 11 !20 521
Não sei que coordenada (x, y) vc usou para compara mas usa esta formula que passei ( x^2+y^2) que o resultado te surpreenderá.
x^2 = x ao quadrado
y^2 = y ao quadrado
vou colocar isso em uma reta infinita onde esta reta define o resultado do calculo que apresentei.
521 2125 9901
--------------------|----------------------------|--------------------------------------------------------------|
E AI VC ACHA QUE 2125 TÃ MAIS PROXIMO DE 521 OU DE 9901?
USE COMO DIFERENÇA cm OU Metros OU AINDA UMA ESCALA COMO UNIDADE DE MEDIDA QUE VC DEFINA PARA FAZER ESTA ANALOGIA.
cara experimenta isso
Private Sub Form_Load()
List1.AddItem [Ô]1925[Ô]
List1.AddItem [Ô]1030[Ô]
List1.AddItem [Ô]1942[Ô]
List1.AddItem [Ô]2140[Ô]
List1.AddItem [Ô]4028[Ô]
End Sub
Private Sub List1_Click()
Dim ver1 As Double, ver2 As Double, ver3 As Double
If List1.ListIndex = 0 Then
ver1 = 0
Else
ver1 = List1.List(List1.ListIndex - 1)
End If
ver2 = List1.List(List1.ListIndex)
If List1.ListIndex = List1.ListCount - 1 Then
ver3 = ver2 * 2
Else
ver3 = List1.List(List1.ListIndex + 1)
End If
If (ver2 - ver1) < (ver3 - ver2) Then
Label1 = ver1
Else
Label1 = ver3
End If
End Sub
tem que deixar o sorted da lista como true
Private Sub Form_Load()
List1.AddItem [Ô]1925[Ô]
List1.AddItem [Ô]1030[Ô]
List1.AddItem [Ô]1942[Ô]
List1.AddItem [Ô]2140[Ô]
List1.AddItem [Ô]4028[Ô]
End Sub
Private Sub List1_Click()
Dim ver1 As Double, ver2 As Double, ver3 As Double
If List1.ListIndex = 0 Then
ver1 = 0
Else
ver1 = List1.List(List1.ListIndex - 1)
End If
ver2 = List1.List(List1.ListIndex)
If List1.ListIndex = List1.ListCount - 1 Then
ver3 = ver2 * 2
Else
ver3 = List1.List(List1.ListIndex + 1)
End If
If (ver2 - ver1) < (ver3 - ver2) Then
Label1 = ver1
Else
Label1 = ver3
End If
End Sub
tem que deixar o sorted da lista como true
è isso ai Caro Colega LVFIOROT matemática é só aplicar certo ou errado é só um ponto de vista.
Valeu se prescisar estamos ai acredito que AJUDAMOS o o colega a resolver seu problema. Se não. pelo memos tentamos
E forum de programação é isso [Ô]tentar sempre para ajudar a todos[Ô] Compartilhar atrai amigos.
Tópico encerrado , respostas não são mais permitidas