Skocz do zawartości

  •  
  • Mini kompendium
  • MimeTeX
  • Regulamin

Zdjęcie
        STUDIA        

Szukanie punktu najbliżej zadanego punktu

Algebra liniowa algebra matematyka wektory

  • Nie możesz napisać tematu
  • Zaloguj się aby odpowiedzieć
3 odpowiedzi w tym temacie

#1 Adrian Kurzeja

Adrian Kurzeja

    Nowicjusz

  • Użytkownik
  • 1 postów
0
Neutralny
  • Płeć:Mężczyzna

Napisano 16.01.2017 - 13:11

Hej, ogólnie to mam zadanie z programowania... prosiłbym o szybką odpowiedź po potrzebuję na dzisiaj.


Otóż załóżmy mam kilka punktów w przestrzeni: np.
(1,1,1)
(2,2,2)
(1,2,3)
(3,2,1)

Moim zadaniem jest znaleźć punkt który jest najbliżej punktu podanego przez użytkownika.
Wiec np. użytkownik podaje punkt (4,1,2)

I muszę sprawdzić który punkt z tych moich punktów jest najbliżej. 

Byłbym bardzo wdzięczy za odpowiedź. Problem wynikł nagle. Z tego rodzaju matematyki dawno nie korzystałem.

Z góry dziękuję! icon_wink.gif

  • 0

Afroman

    Kombinator

  • Użytkownik
3
  • Płeć:Kobieta

Napisano 25.09.2011 - 17:55

#2 Jarekzulus

Jarekzulus

    Wielki Analityk

  • +Mods
  • Redaktor
  • 4210 postów
3410
Profesor
  • Płeć:Mężczyzna

Napisano 16.01.2017 - 19:31

pseudo kod

 

1. Stwórz tablicę podanych punktów (3 kolumny, n wierszy) - I kolumna współrzędna x, druga współrzędna y, trzecia z (Tab

 

2. Stwórz obiekt który będzie przechowywał minimalną odległość double MinOdl=0;

 

3. Stwórz tablicę na podany przez kogoś punkt (Ax,Ay,Az)

 

4. Następnie forem przechodzisz przechodzisz od 1 do n obliczając odległość danego punktu od wskazanego

 

    odleg= Math.sqrt(Math.pow(xA-tab[i,1],2)+Math.pow(yA-tab[i,2],2)+Math.pow(zA-tab[i,3],2))

   

następnie jeszcze wewnątrz fora sprawdzamy czy odleg ma wartość mniejszą niż MinOdl

 

Po przejściu pętli masz najmniejszą wartość, dodatkowo w trakcie sprawdzania możesz zapamiętać dla jakiego i osiągnąłeś minimalną wartość.

 

 

 


  • 0

:wave: :wave: :wave: Jeśli rzuciłem choć promyczek światła na problem który postawiłeś - podziękuj. pre_1433974176__syg.jpgNad kreską


#3 Jarekzulus

Jarekzulus

    Wielki Analityk

  • +Mods
  • Redaktor
  • 4210 postów
3410
Profesor
  • Płeć:Mężczyzna

Napisano 16.01.2017 - 19:32

Mogę Ci to napisać w języku R (z małymi poprawkami będziesz miał w Javie bo składnia jest bardzo bardzo podobna)

baza <- matrix(c(1,2,3, 4,5,6,7,8,12,11,7,-2,-6,11,12,13,0,2), nrow = 6, ncol = 3, byrow = TRUE)
punkt=c(11,17,-5)
punkt<-as.matrix(punkt)
odleg=matrix(0,2,1)
odleg[1,1]=100
rownames(odleg)=c("odleglosc_min","nr_punktu")
for(i in 1:length(baza[,1]))
{
       dd=((punkt[1,1]-baza[i,1])^2+(punkt[2,1]-baza[i,2])^2+(punkt[2,1]-baza[i,3])^2)^(1/2)
       if(dd<=odleg[1,1])
       {
         odleg[1,1]=dd
         odleg[2,1]=i
       }
}
#Najbliżej danego punktu jest punkt numer 
odleg[2,1] 
#Odległość między tyli punktami wynosi 
odleg[1,1]

Użytkownik Jarekzulus edytował ten post 18.01.2017 - 09:10

  • 0

:wave: :wave: :wave: Jeśli rzuciłem choć promyczek światła na problem który postawiłeś - podziękuj. pre_1433974176__syg.jpgNad kreską


#4 Igor555

Igor555

    Nowicjusz

  • Jr Użytkownik
  • 4 postów
0
Neutralny
  • Płeć:Mężczyzna

Napisano 19.01.2017 - 15:46

Czarna magia dla mnie poprostu.


Użytkownik Jarekzulus edytował ten post 19.01.2017 - 17:52
bez linków

  • 0