Oppervlakte berekenen dynamisch figuur

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 21:28
Beste tweakers,

Na veel zoeken en speuren op Google ben ik toch uiteindelijke hier gekomen vanwege een probleem met wiskunde. Ik probeer de omtrek oppervlakte van een willekeurig figuur te berekenen. Nu moet ik zeggen dat ik geen flauw idee heb waar ik dit moest plaatsen maar aangezien ik het idee in websitevorm heb gebouwd dacht ik dat deze het beste in de Pro sectie kon ;)

Ik heb een afbeelding waar ik een lijn om heen kan trekken:
Afbeeldingslocatie: http://temp.leaked.nl/voorbeeld.jpg

Dit is geheel dynamisch en ik moet weten wat de omtrek oppervlakte is van het figuur dat getekend is. Hier is een voorbeeld van de website om de omtrek te kunnen tekenen
http://temp.leaked.nl/
(Werkt met canvas dus IE, Firefox, Chrome laatste versies vereist)

Nu lukt een vierkant, driehoek of cirkel mij prima om te berekenen alleen dit gaat me iets te ver boven het hoofd.

Heeft iemand enig idee hoe ik dit kan doen? :)

[ Voor 4% gewijzigd door ZeroXT op 12-08-2012 22:15 ]


Acties:
  • 0 Henk 'm!

  • Brilsmurfffje
  • Registratie: December 2007
  • Niet online

Brilsmurfffje

Parttime Prutser

je kan de pixels toch laten tellen ? En dan aan de hand van de PPI waarde kan je berekenen wat de lengte is

Acties:
  • 0 Henk 'm!

  • RadiQal
  • Registratie: December 2005
  • Laatst online: 22-05-2024
Is er geen manier om alle lijnen afzonderlijk te bepalen? Vervolgens deze op te tellen?

Acties:
  • 0 Henk 'm!

  • stfn345
  • Registratie: Januari 2000
  • Laatst online: 24-04 10:09
Lijkt mij idd ook dat je pixels kan tellen?

van pixel 1,20 naar 50,100 en dan een pythagoras er overheen?

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Lijkt me niet al te moeilijk om de lengte van die lijn te krijgen, sommige programma's laten de totale lengte zelfs bij het trekken al zien in de statusbalk volgens mij.

Of bedoel je oppervlakte in plaats van omtrek?

Maar wat zou deze omtrek hier moeten zeggen? Het is al een vrij arbitraire lijn zo, zonder haren en bepaalde rondingen enzo, en het is voor een bepaald aanzicht, bij een bepaalde vergroting. Lijkt me bijna nergens bruikbaar voor ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 21:28
Mijn excuses, ik bedoelde inderdaad de oppervlakte. De individuele lijnen worden opgeslagen in een array. Deze heeft de top en left positie en de top en left positie van waar de lijn heen moet dus:

array
(
array(left => 127, top => 150),
array(left => 200, top => 184,
array(left => 127, top => 150)
)

[ Voor 22% gewijzigd door ZeroXT op 12-08-2012 22:19 ]


Acties:
  • 0 Henk 'm!

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

ZeroXT schreef op zondag 12 augustus 2012 @ 22:14:
Mijn excuses, ik bedoelde inderdaad de oppervlakte. De individuele lijnen worden opgeslagen in een array. Deze heeft de top en left positie en de top en left positie van waar de lijn heen moet dus:

{begin : [10,10], eind : [50, 70]}
Dus je zoekt de oppervlakte van een polygoon (veelhoek).
Hier kun je de schoenveterformule voor gebruiken :)

Misschien kun je even een topic report Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/icon_hand.gif indienen om de titel te laten fixen?

Acties:
  • 0 Henk 'm!

  • Henk007
  • Registratie: December 2003
  • Laatst online: 06-04 00:29

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Hier zijn inderdaad gewoon standaardalgoritmes voor, [google=calculate area polygon] en je favoriete programmeertaal/-platform. ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23-04 16:03
De shoelace formula is wat je zoekt, aangenomen dat lijnen elkaar niet kruisen.

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 22-04 21:19
Soultaker schreef op zondag 12 augustus 2012 @ 22:36:
De shoelace formula is wat je zoekt, aangenomen dat lijnen elkaar niet kruisen.
En mochten lijnen dat wel doen; er zijn ook standaard algoritmen om dat soort complex polygons (ook wel: non-simple polygons) te partitioneren in een set van simple polygons die door het shoelace algoritme verwerkt kunnen worden. Daarna is het simpelweg een kwestie van de oppervlaktes berekend uit deze set optellen en je hebt de totaaloppervlakte.

Je kunt o.a. het Bentley-Ottman algoritme gebruiken om een decompositie in simpele polygonen te verkrijgen. Dit algoritme vindt normaliter enkel de intersecties in een set lijnsegmenten, maar kan ook gebruikt worden om de plekken te vinden waar een polygon zichzelf kruist en hier nieuwe vertices in te bouwen die het polygon opdelen. Gegeven een polygon met n input vertices en k verwachtte snijpunten heeft dit algoritme een complexiteit O((n+k) log n).

Het algoritme zelf is redelijk simpel te volgen.

[ Voor 8% gewijzigd door R4gnax op 13-08-2012 21:03 ]


Acties:
  • 0 Henk 'm!

  • Big Womly
  • Registratie: Oktober 2007
  • Laatst online: 18-06-2024

Big Womly

Live forever, or die trying

Of je kan je polygoon gaan trainguleren. De oppervlakte van je polygoon is de som van de oppervlaktes van je driehoeken.

When you talk to God it's called prayer, but when God talks to you it's called schizophrenia


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 22-04 21:19
Big Womly schreef op dinsdag 14 augustus 2012 @ 09:51:
Of je kan je polygoon gaan trainguleren. De oppervlakte van je polygoon is de som van de oppervlaktes van je driehoeken.
Triangulatie komt op hetzelfde neer. Daarnaast gaan de doorgaans gebruikte algoritmen voor triangulatie ook uit van simpele polygonen. De general case oplossen vereist dan even goed een pre-processing stap die eerst complexe polygonen in simpele polygonen omzet.

Acties:
  • 0 Henk 'm!

  • THA_ErAsEr
  • Registratie: Augustus 2010
  • Laatst online: 14-03 10:56
Hoe ik het zou doen:
-Laat je programma een hoekpunt nemen
-Neem een 2de hoekpunt, hetgene dat het dichts bij het eerste ligt
-Zoek nu naar een 3de punt, dat bereikbaar is vanuit je vorige 2 punten met als voorwaarde dat deze geen enkele lijn raakt.

-Dit blijf je doen tot je nog maar 3 hoeken hebt die verbindbaar zijn met als voorwaarde dat deze geen enkele lijn raakt. Anders moet je een nieuw hoekpunt creëren.

Moest zulke functie al geschreven zijn door iemand anders, zou het wel veel simpeler voor jou zijn ;)

Acties:
  • 0 Henk 'm!

  • Henk007
  • Registratie: December 2003
  • Laatst online: 06-04 00:29
THA_ErAsEr schreef op dinsdag 28 augustus 2012 @ 15:31:
Hoe ik het zou doen:
[recept voor oppervlakteberekening]
Moest zulke functie al geschreven zijn door iemand anders, zou het wel veel simpeler voor jou zijn ;)
De kans is erg klein dat je in drie zinnen in een forumpost een algoritme presenteert dat efficiënter is dan wat duizenden professionals in de wereld de laatste decennia al hebben ontwikkeld.
Pagina: 1