geheel oppervlak driehoek bedekken cirkels om hoekpunten

Pagina: 1
Acties:

Onderwerpen


  • Kid Jansen
  • Registratie: Oktober 2005
  • Niet online
Niet echt een programmeervraag, meer een wiskundig vraagstuk, maar denk dat het hier toch het best op z'n plaats is op GoT.

Gedefinieerd zijn drie punten (als x en y waarde). Je verbindt die drie punten en krijgt een driehoek, waarvan je dan natuurlijk alle drie de zijdes weet. Wat ik vervolgens wil weten is wat de kleinste straal is waarbij je met drie gelijke cirkels, één om elk hoekpunt, het gehele oppervlak van de driehoek kan bedekken.

Wat ik tot nu toe heb is het volgende:

langste zijde / 4 < r ≤ langste zijde / √3

Wat vrij gemakkelijk te beredeneren is:

De ondergrens, kwart van de langste zijde, heb je wanneer de drie punten op één lijn liggen met gelijke afstand tussen het middelste punt en de punten aan de uiteinden van het lijnstuk. Dus een gelijkbenige driehoek met één hoek van 180° en twee van 0°. Doordat de driehoek dan eigenlijk geen driehoek is, telt dit geval zelf niet mee. Dus de straal van de cirkels is groter dan een kwart van langste zijde

Afbeeldingslocatie: http://tweakers.net/ext/f/4ew4EO1JO3s1iqMrCk4KAqcM/full.png

De bovengrens, langste zijde gedeeld door √3, heb je bij een gelijkzijdige driehoek (waarbij alle zijdes natuurlijk gelijk zijn en het dus niet uitmaakt welke je pakt). Dan is het namelijk gelijk aan de afstand van een hoekpunt tot het zwaartepunt van de driehoek.

Afbeeldingslocatie: http://tweakers.net/ext/f/UfwO5CvVe0dTAzWDi6PtOHbG/full.png


Wat me tot nu toe alleen niet gelukt is, is het bedenken van een algemene formule voor dit probleem. Zoeken op internet heeft ook niks opgeleverd. Zodra je gaat zoeken op iets met cirkels en driehoeken krijg je eigenlijk alleen maar resultaten over de ingeschreven en omgeschreven cirkels van een driehoek.

Hebben jullie enig idee hoe ik de straal van de cirkels bereken op basis van de lengtes van drie zijdes van de driehoek?

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Je wil dat de cirkels elkaar in 'het midden' snijden. Niet overlappen, want dan kan de straal natuurlijk kleiner. Het punt waarin ze snijden heeft dus een gelijke afstand tot elk hoekpunt (dat volgt immers uit de definitie van je drie even grote cirkels), en het probleem is nu dus gereduceerd tot het vinden van dit punt.

Je zoekt dus het punt dat een gelijke afstand heeft tot de drie hoekpunten. Oftewel, het middelpunt van de omgeschreven cirkel. De straal die je zoekt is dus de straal van de omgeschreven cirkel. Daar zou je wel wat mee moeten kunnen, denk ik. ;)

edit: als het middelpunt van de omgeschreven cirkel buiten de driehoek ligt (wat gebeurt dan en slechts dan als je een hoek hebt van meer dan 90 graden), vindt je hiermee een te grote straal, want dan zoek je helemaal niet het punt waarin de drie cirkels snijden. Dat gebeurt bijvoorbeeld in je eerste voorbeeld, de drie cirkels snijden nergens alle drie. In dat geval lijkt (op basis van wat tekeningetjes) de straal gelijk te zijn aan het snijpunt van de langste zijde met de middelloodlijn van de op één na langste zijde. De twee cirkels aangrenzend aan de op één na langste zijde moeten immers snijden in de langste zijde om die helemaal te bedekken.

Tekeningetje:
Afbeeldingslocatie: http://tweakers.net/ext/f/RcDBEvdAvlua5EtGHGDtY9vU/full.png
edit: ja, ik heb deze post nu al drie keer ge-edit. Blijkt maar weer dat je nooit te snel je gegokte vermoeden als waarheid moet aannemen in de wiskunde. :+

[ Voor 74% gewijzigd door bwerg op 11-04-2014 01:19 ]

Heeft geen speciale krachten en is daar erg boos over.


  • Kid Jansen
  • Registratie: Oktober 2005
  • Niet online
In alle gevallen overlappen de cirkels, er zullen dus altijd punten zijn binnen de driehoek die in twee cirkels liggen. Er zijn echter nooit punten die in drie cirkels liggen, want dan kan de straal kleiner.

De driehoeken snijden elkaar ook lang niet altijd in één punt. Dat is volgens mij alleen maar het geval bij gelijkbenige driehoek met een tophoek van 60° ≤ α ≤ 90°. Kleiner dan 60° kan niet, want dan is de basis niet meer de langste zijde, en als de hoek groter is dan 90° snijden de cirkels om de uiteinden van de basis elkaar niet meer. Bij een niet gelijkbenige driehoek snijden de drie cirkels volgens mij nooit door hetzelfde punt.

Verder kan de straal veel kleiner worden dan de helft van de langste zijde, namelijk net iets groter, maar oneindig dichtbij, een kwart van de langste zijde.

Als je bijvoorbeeld een driehoek neemt met de punten (0,0), (1,0) en (0.5,0.025) heb je cirkels met een straal van ongeveer 0.25063 (op basis van trial and error in Matlab).

Afbeeldingslocatie: http://tweakers.net/ext/f/DPIn5d5IWK611YY0Al6Uwdyx/full.png

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Je moet dus een gevalsonderscheiding maken. Heb je een hoek groter dan 90 graden (of specifiek in het geval van een gelijkbenige driehoek: een stompe tophoek) dan is het de constructie die duckyvite beschrijft, of die ik beschrijf in het laatste deel van mijn eerste post (duckyvite en ik zeggen daarmee hetzelfde). Zijn alle hoeken kleiner dan 90 graden, of in het geval van een gelijkbenige driehoek dus een scherpe tophoek, dan is het gewoon het middelpunt van de omgeschreven cirkel en daarvoor kun je dus gewoon de formuletjes gebruiken die op wikipedia al beschreven worden.

stomp:
Afbeeldingslocatie: http://tweakers.net/ext/f/hJjYpBNeCXu2eLQcGGqnhvhC/full.png
scherp:
Afbeeldingslocatie: http://tweakers.net/ext/f/nSry5g299k8eVI0RfA2aXCO3/full.png
n.b. ik zie dat de schuine lijn in het onderste plaatje ook door het hoekpunt rechtsonder gaat maar dat is toeval, die lijn is de middelloodlijn van de zijde linksboven.
offtopic:
Toen ik begon met editen was er nog geen post onder... maar dat editen duurde toen een half uur of zo. Ik neem de volgende keer wel risico op een dubbelpost en verkettering door een moderator. :+

[ Voor 19% gewijzigd door bwerg op 11-04-2014 13:21 ]

Heeft geen speciale krachten en is daar erg boos over.


  • Kid Jansen
  • Registratie: Oktober 2005
  • Niet online
bwerg schreef op vrijdag 11 april 2014 @ 21:58:
Is dat niet gewoon een afrondingsfout van de berekening in Matlab?
Geen idee, maar lijkt me sterk, want had "format long" aan staan.
Ik zou niet weten welk stuk van de driehoek dan buiten de cirkel zou vallen.
Het groene stuk in onderstaand figuur

Afbeeldingslocatie: http://tweakers.net/ext/f/RXwGAVpWyXgFE80mnbDs37Ay/full.png
De cirkels snijden elkaar duidelijk in het snijpunt van de middelloodlijn en de langste zijde (zo is de straal namelijk gedefinieerd, en de afstand tot dat punt is duidelijk gelijk voor elk hoekpunt wegens symmetrie om de middelloodlijn). M.a.w. ze raken elkaar op de langste zijde. Beide cirkelbogen gaan vanuit dat punt verder naar onderen, dus er kan daar nooit een punt van de driehoek buiten de cirkel vallen.
Ik snap het ook niet, want jouw oplossing klopt wel exact (in ieder geval zo nauwkeurig als Matlab maximaal kan) voor een driehoek met hoeken van 91°, 49° en 40° (semi-random voorbeeld dat ik gekozen had). Zou best kunnen dat het alleen werkt voor niet-gelijkbenige stompe driehoeken.

Afbeeldingslocatie: http://tweakers.net/ext/f/bzRRSa1owF9TdLMzlkzXuHrH/full.png

De lengte van de zijdes zijn in dit geval 1, sin49/sin91 en sin40/sin91. De straal van de cirkels is dan sin49/(2*sin91*cos40).

Lijkt me sterk dat Matlab het bijna de ene driehoek perfect zou doen en bij de andere driehoek niet.

EDIT: ik heb er nog eens over nagedacht en het moet gewoon kloppen wat je zegt. Als ik het in Matlab na reken klopt het ook. Je moet blijkbaar gewoon niet uit gaan van de plots in Matlab als controle, want dan lijkt het fout, terwijl het goed is.

[ Voor 13% gewijzigd door Kid Jansen op 11-04-2014 23:18 ]

Pagina: 1