Såg Andreas inlägg och tänkte göra det lite mer intressant... Det blir en kul utmaning! Har kollat lite på det och har hittat 3st möjliga lösningar, finns säkert många fler...: Jag har gjort funktioner för att hitta skärningspunkten för planet, och funderar på bästa sättet att bestämma om den ligger inom triangeln. Ett sätt är att byta koordinatsystem, men i VB är det svårt att få ut något vettigt på det sättet. Jag vill bara komplettera lite. Tror att jag har löst det. Hittade endel info på webben som jag har lyckats pussla ihop, men föstår inte riktigt matten...UTMANING 2!
Är det någon som kan skriva en funktion som kontrollerar om en linje träffar en polygon i 3D? och isåfall var på polygonen.Sv: UTMANING 2!
Jag tar mig friheten att definiera lite grejer:
<code>
Type Point3D
X As Double
Y As Double
Z As Double
End Type
Type Tri3D
P(1 To 3) As Point3D
End Type
Type Line3D
P1 As Point3D
P2 As Point3D
End Type
</code>
/Niklas JanssonSv: UTMANING 2!
Alla börjar såhär:
Om man tänker sig att polygonen ligger i ett oändligt stort plan så kan man avgöra om start och slut på linjen ligger på olika sidor om planet, om det är så kollar man var på planet linjen träffar.
1. Sedan skapar man plan som utgår från varje sida i polygonen som man kollar punkten mot, om punkten ligger innanför alla plan så har linjen träffat polygonen.
2. Om man tänker sig linjer från träff punkten till först och andra punkten i polygonen och kollar antalet grader mellan första och andra punkten, sen gör man likadant men punkt två och tre och sedan punkt tre och ett. När man lägger ihop alla graderna så ska det uppgå till 360 om linjen har gått igenom polygonen.
3. Den tredje varianten går ut på att man med hjälp av längden på sidorna i polygonen kan avgöra om träffpunkten ligger inom polygonen. Tyvärr har jag inte riktigt förstått hur det funkar än... :-)
Är det nån som förstår vad jag menar och kan omsätta det till kod?Sv: UTMANING 2!
Jag tror att jag väljer avstånds-principen. Man kollar helt enkelt avståndet mellan punkterna i triangeln och avståndet till punkten och sedan jämföra dessa. tyvärr är jag i skolan och har inte möjlighet att komma på den slutgiltliga lösningen.
/Niklas JanssonSv: UTMANING 2!
Man gör en funktion som kollar en linje mot en triangel. Applicera denna idé mot alla trianglar i polygonen.
Funktionen tar fram skärningen mellan det oändliga planet genom triangeln och linjen.
Det svåra är - som Peter säger (på ett annat sätt) - att bestämma om skärningen ligger i triangeln eller inte.
/NJSv: UTMANING 2!
Om Niklas eller nån annan kan förklara vad jag har gjort så vore jag väldigt tacksam :-)
Har lagt upp det här:
http://www.pellesoft.nu/login/upload/t_view4.asp?tid=67