Hej! Det är inte självklart hur man löser det. Det finns åtminstone tre varianter. Låt säga att vi tittar på en kvadrat med sidan a, som du vill utöka med b. Du kan kolla mitt gamla uppskick.Beräkning av polygon kring kurva?
Har ett litet delikat problem som jag gissar är löst många gånger tidigare.
Jag har en (egentligen åtskilliga tiotusentals) 2-dimensionell kurva beskriven som en ordnad mängd 2D-koordinater där kurvan består av linjer dragna mellan varje koordinat och dess efterföljande koordinat.
Nu vill jag rita en polygon omkring kurvan så att kurvan blir x enheter/pixlar "bredare". Jag tror att en exakt beskrivning skulle kunna vara att polygonens yta utgörs av punktmängden av alla x långa normaler ut från kurvan.
En simpel ansats jag testade var att beräkna linjer, medurs, som låg på givet avstånd från varje kurvsegment. Ändpunkterna på dessa linjer beräknade jag till den punkt där nuvarande kurvsegments "bredvidlinje" och nästa korsade varandra. Det gav ett bra resultat i snälla fall men tex vid kurvor som innehåll snäva svängar så divergerade det kraftigt. De omgivande linjerna svänger så att säga in i varandra. (:
Nån som har något bra förslag på lösning, någon bra referens eller kanske till och med färdig kod? Gärna java eftersom det är det som används i just detta fall.
Mvh
/GSv: Beräkning av polygon kring kurva?
1. Ta de fyra kanterna, flytta dem i normalens riktning sträckan b. Sammanbind hörnpunkterna med ytterligare linjer. Det är nog det du har gjort, och problemet har du nog också redan sett.
I fallet kvadrat blir detta en åttahörning.
2. Den "mest korrekta", är att i varje punkt på linjen rita en cirkel med radie b, och sedan ta de "yttersta punkterna". I praktiken blir det samma sak som 1., men du lägger till cirkelbågar i alla hörn, kontinuerliga, och tangentiella till båda linjerna. Problemet med detta är förstås att du måste införa cirkelbågar...
I fallet kvadrat blir detta en ny kvadrat med sidan a+2b, men med rundade hörnen, med radie b.
3. Gör 1., men utvidga alla linjer så att de möter dem före och efter. Problemet med denna är att den är lite svårare att implementera (inte jättesvår, men man måste hålla reda på vad man gör). Det är nog den du vill ha.
I fallet kvadrat blir detta en ny kvadrat med sidan a+2b.Sv: Beräkning av polygon kring kurva?
Programarkivet:Polygon beräkna Area
Kan du kanske använda som reference.