Avatar billede jonas82 Nybegynder
24. november 2009 - 19:47 Der er 7 kommentarer og
1 løsning

Skæringspunkt imellem linjestykker

Hej alle,

Jeg har to linjestykker, som jeg gerne vil udregne koordinaterne på et eventuelt skæringspunkt for.

Liniestykkerne kan beskrives sådan:

liniestykke1 = (x1,y1), (x2, y2)
liniestykke2 = (x1,y3), (x2, y4)

Nogen der ved hvordan man gør det?
Avatar billede arne_v Ekspert
24. november 2009 - 20:10 #1
Det er jo mere matematik end C#.

Foerst finder du ligningerne y=a*x+b

linie 1:

a1 = (y2-y1)/(x2-x1)
b1 = y1-a*x1

linie 2:

a2 = (y4-y3)/(x2-x1)
b2 = y4-a*x1

saa saetter vi de to ligninger lig hinanden og loeser.

a1*x+b1=a2*x+b2
=>
x = (b2-b1)/(a1-a2)

y=a1*x+b1

og til sidst checker du om x1<=x<=x2, hvis ikke saa er der ikke nogen loesning
Avatar billede jonas82 Nybegynder
24. november 2009 - 20:16 #2
Ja, jeg skal bare have det gjort automatisk i C#, ved ikke lige hvordan man koder sådan noget med at løse ligninger :-)

Jeg har fundet følgende eksempel i F#, som jeg prøver at oversætte.

http://www.navision-blog.de/2008/12/02/calculate-the-intersection-of-two-lines-in-fsharp-2d/
Avatar billede arne_v Ekspert
24. november 2009 - 20:28 #3
Der skal stort set bare tilfoejes semikolonner for at goere det til C#.
Avatar billede arne_v Ekspert
24. november 2009 - 20:29 #4
a1 = (y2-y1)/(x2-x1);
b1 = y1-a*x1;
a2 = (y4-y3)/(x2-x1);
b2 = y4-a*x1;
x = (b2-b1)/(a1-a2);
y=a1*x+b1;
Avatar billede jonas82 Nybegynder
24. november 2009 - 20:46 #5
Det har du jo sådan set ret i :)

Tror du det vil give problemer, ifbm. division, at jeg har double som Y værdier og int som X værdier.
Avatar billede arne_v Ekspert
24. november 2009 - 21:14 #6
Kun hvis du dividerer en x med en x - og det har du saa vidt jeg kan se ikke brug  for.
Avatar billede jonas82 Nybegynder
26. november 2009 - 17:09 #7
Tusind tak. Det virker selvfølgelig ;-)

Du må gerne svare.
Avatar billede arne_v Ekspert
26. november 2009 - 17:15 #8
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester