/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
creamygirl 610
berpox 610
jomfruane 570
10  3773 570
smarteste måde at beregne om et et punkt
Fra : Kim Schulz


Dato : 05-05-04 10:23

hejsa
Sidder lige og roder med et program der skal funde ud af om et
skilt (et koordinat) er placeret tæt på en vej (en liste af
koordinater).
der er rette linjer fra koordinat til koordinat i vejens
liste af koordinater.
Hvis bare skiltet er inde for en præsition af 2 decimaler
af et punkt der ligger på vejen (ikke i listen af koordinater
nødvendigvis) - altså hvis der er et punkt på vejen som hedder
1.543 så er 1.54 ok men 1.55 er ikke.

Hvordan regner jeg lige lettest dette ud så jeg finder hvilket
punkt på vejen som ligger nærmest skiltet (skiltets koordinat skal
erstattes med dette)?
Jeg regner med at det ville være lettest at lave punkt-linje
afstands beregning for hvert koordinat par i vejens liste, men
kan forudse nogle problemer med at linjer i denne formel ikke er
endelige og derfor kan et skilt blive bundet til et punkt som
i virkeligheden ikke ligger på vejstykket.

Nogen der har en god ide?

--
MVH
Kim

 
 
Ukendt (05-05-2004)
Kommentar
Fra : Ukendt


Dato : 05-05-04 10:51

"Kim Schulz" <kim@schulz.dk> wrote in message
news:slrnc9hcip.2fl.kim@homer.cs.auc.dk...
> Jeg regner med at det ville være lettest at lave punkt-linje
> afstands beregning for hvert koordinat par i vejens liste, men
> kan forudse nogle problemer med at linjer i denne formel ikke er
> endelige og derfor kan et skilt blive bundet til et punkt som
> i virkeligheden ikke ligger på vejstykket.

Som datalogi-studerende burde du vel ikke have svært ved den slags?

Nå, men hvis linie-stykket hedder (Ax,Ay)-(Bx,By) og dit vejskilt er i
(Px,Py), så kan du for hvert koordinatpar beregne afstanden (dist) og
punktets koordinater (Qx,Qy) således:

AB2:= sqr(Ax-Bx)+sqr(Ay-By);
AP2:= sqr(Ax-Px)+sqr(Ay-Py);
BP2:= sqr(Bx-Px)+sqr(By-Py);
if (AB2=0) or (AP2=0) then
begin
Qx:= Ax;
Qy:= Ay;
dist:= sqrt(AP2);
end else
if BP2=0 then
begin
Qx:= Bx;
Qy:= By;
dist:= 0;
end else
if AB2+AP2<BP2 then
begin
Qx:= Ax;
Qy:= Ay;
dist:= sqrt(AP2);
end else
if AB2+BP2<AP2 then
begin
Qx:= Bx;
Qy:= By;
dist:= sqrt(BP2);
end else
begin
t:= ((Px-Ax)*(Bx-Ax)+(Py-Ay)*(By-Ay))/AB2;
Qx:= Ax+(Bx-Ax)*t;
Qy:= Ay+(By-Ay)*t;
dist:= abs((Ay-By)*Px+(Bx-Ax)*Py+(Ax*By-Bx*Ay))/sqrt(AB2);
end;

Jeg har sat FUT til dk.edb.programmering, da det vist mere hører hjemme
der.

hilsen
Uffe


Kim Schulz (05-05-2004)
Kommentar
Fra : Kim Schulz


Dato : 05-05-04 11:07

In article <4098b8fc$0$177$edfadb0f@dtext01.news.tele.dk>, Uffe Kousgaard wrote:
> Som datalogi-studerende burde du vel ikke have svært ved den slags?

tjaa det var mere for at høre om der var nogle kloge hoveder som
havde en anden løsning end den du har give her (det er ca. den samme
som det jeg pt har - og som jeg finder klodset).



[snip kode eksempel]

nydeligt.

>
> Jeg har sat FUT til dk.edb.programmering, da det vist mere hører hjemme
> der.

og jeg tillader mig lige at holde den herinde da det bestemt ikke er en
kode løsning jeg ønsker.


MVH
Kim Schulz

Ukendt (05-05-2004)
Kommentar
Fra : Ukendt


Dato : 05-05-04 11:57

"Kim Schulz" <kim@schulz.dk> wrote in message
news:slrnc9hf5a.2fl.kim@homer.cs.auc.dk...
> In article <4098b8fc$0$177$edfadb0f@dtext01.news.tele.dk>, Uffe
Kousgaard wrote:
> > Som datalogi-studerende burde du vel ikke have svært ved den slags?
>
> tjaa det var mere for at høre om der var nogle kloge hoveder som
> havde en anden løsning end den du har give her (det er ca. den samme
> som det jeg pt har - og som jeg finder klodset).

Javel så. Jeg kan forestille mig flere forbedringer, som gør det mere
effektivt, men bestemt ikke mindre klodset. Afstanden fra et punkt til
et liniestykke kan dårligt udtrykkes mere kompakt.

hilsen
Uffe


Kim Schulz (05-05-2004)
Kommentar
Fra : Kim Schulz


Dato : 05-05-04 12:13

In article <4098c897$0$161$edfadb0f@dtext01.news.tele.dk>, Uffe Kousgaard wrote:
> Javel så. Jeg kan forestille mig flere forbedringer, som gør det mere
> effektivt, men bestemt ikke mindre klodset. Afstanden fra et punkt til
> et liniestykke kan dårligt udtrykkes mere kompakt.

Det er ikke så meget fordi det er for lidt kompakt kode messigt.
Det er mere et spørgsmål om at hverken din eller min metode, som
den er nu, fanger alle skilte som den burde.

f.eks. hvis skiltet ligger for enden af en spids vinkel
på vejen.

_____________________ s
/
/
/
/

MVH
Kim

Ukendt (05-05-2004)
Kommentar
Fra : Ukendt


Dato : 05-05-04 13:39

Din kode virker muligvis ikke, men min er testet grundigt og anvendes
dagligt af mange brugere. Den kan også håndtere din spidse vinkel.

hilsen
Uffe

"Kim Schulz" <kim@schulz.dk> wrote in message
news:slrnc9hj27.2fl.kim@homer.cs.auc.dk...
> Det er mere et spørgsmål om at hverken din eller min metode, som
> den er nu, fanger alle skilte som den burde.
>
> f.eks. hvis skiltet ligger for enden af en spids vinkel
> på vejen.
>
> _____________________ s
> /
> /
> /
> /


Kim Schulz (05-05-2004)
Kommentar
Fra : Kim Schulz


Dato : 05-05-04 14:02

In article <4098e061$0$160$edfadb0f@dtext01.news.tele.dk>, Uffe Kousgaard wrote:
> Din kode virker muligvis ikke, men min er testet grundigt og anvendes
> dagligt af mange brugere. Den kan også håndtere din spidse vinkel.

Hmm interessant. Godt nok er din kode oversat til java, men alligevel burde den
ikke fejle med dette. Jeg må se på vores testcases om der er smuttet et tal.
Skal der forøvrigt ikke tages absolut værdi på f.eks. Ay-By osv?
Umiddelbart kan jeg komme på situationer hvor det ville
fejle uden, med mindre du begynder at lege med komplekse tal osv. eller hva?

Men tak for eksemplet.

--
MVH
Kim


Christian B. Andrese~ (05-05-2004)
Kommentar
Fra : Christian B. Andrese~


Dato : 05-05-04 11:39


"Kim Schulz" <kim@schulz.dk> wrote in message
news:slrnc9hcip.2fl.kim@homer.cs.auc.dk...
> hejsa
> Sidder lige og roder med et program der skal funde ud af om et
> skilt (et koordinat) er placeret tæt på en vej (en liste af
> koordinater).
> der er rette linjer fra koordinat til koordinat i vejens
> liste af koordinater.
> Hvis bare skiltet er inde for en præsition af 2 decimaler
> af et punkt der ligger på vejen (ikke i listen af koordinater
> nødvendigvis) - altså hvis der er et punkt på vejen som hedder
> 1.543 så er 1.54 ok men 1.55 er ikke.
>
> Hvordan regner jeg lige lettest dette ud så jeg finder hvilket
> punkt på vejen som ligger nærmest skiltet (skiltets koordinat skal
> erstattes med dette)?
> Jeg regner med at det ville være lettest at lave punkt-linje
> afstands beregning for hvert koordinat par i vejens liste, men
> kan forudse nogle problemer med at linjer i denne formel ikke er
> endelige og derfor kan et skilt blive bundet til et punkt som
> i virkeligheden ikke ligger på vejstykket.
>
> Nogen der har en god ide?

Den her bruger jeg selv i noget GPS positioneringsudstyr:

http://www.alienryderflex.com/polygon/

Den her ser også fin ud:

http://geometryalgorithms.com/Archive/algorithm_0103/algorithm_0103.htm#wn_PinPolygon


--
mvh/rg. Christian
If it isn't broken, don't "fix" it --
you may simply break it instead!



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste