Hintergrund:Berechnung der Begrenzungspunkte für den Bereich einer „Tortenstück“ und „Unterbereiche“
ich vor kurzem wurde das Spiel mit GDI + eine „Disc“ ziehen einen weiten Farbwechsel um 360 Grad Anzeige . (Ich grub einige HSL in RGB-Code, um durch HSL (1,1,1) -> HSL (360,1,1))
Schleife zu durchlaufen Ich zog zuerst einen vollen Kreis mit dem oben genannten, und dann einen zweiten Kreis in Grau über der Mitte geben die folgende
Also das ist alles in Ordnung ... aber ich erkannte, dass GDI + isolierend uns von vielen der schwierigen Spiel, das hier vor sich geht mittels der FillPie
Methode. Außerdem müssen Sie in FillPie
ein Begrenzungsrechteck für den Kreis angeben, im Gegensatz zu einer Radiuslänge. Es macht auch eine vollständige Segmentfüllung und erlaubt Ihnen nicht, nur einen Teil dieses Segments anzugeben.
Frage:
Kann jemand mich in die Richtung einiger Mathematische Funktionen hinweisen oder eine Erklärung geben, auf welche forumla ich brauchen würde, um die Gegend & Plotpunkte der folgenden „Green Filled Area“ gegeben berechnen:
Point `c` - an x,y co-ordinate
Angle `A` - an angle from horizontal
Angle `B - an angle from horizontal where `B` - `A` == the sweep angle
Length `r` - a distance from `c`
Length `r2` - a distance from `c` where `r2` - `r` == the `height` of the segment to be filled.
Links zu Math Quellen sind in Ordnung, aber ich habe einen schnellen google-& Blick hat bei Wolfram Math und konnte finden, wonach ich suchte. Wenn es eine Möglichkeit gäbe, eine Abfolge von Bounding (x, y) -Co-Oder zu generieren, die als Point[]
an Graphics.FillPolygon übergeben werden könnte, wäre das auch cool.
+1 eric Je kleiner das Inkrement von t zwischen A und B ist, desto besser ist die Auflösung Ihrer Punkte ... zB wenn A 30 * und B 45 * ist, dann werden die Inkremente zwischen dem A & B, dem besser die Auflösung Ihrer Kurve ... Niedrig Res = (30, 35, 40, 45) Hohe Res = (30, 30.5, 31, 31.5, ... 44.5, 45) –
Ja, idealerweise sollte das Inkrement entsprechen einer Anzahl von Pixeln auf der äußeren cir cle. Die Bogenlänge zwischen Punkten auf dem äußeren Kreis ist (r + r2) * dt, wobei dt der Winkelzuwachs in Radianten ist. –
+1. @Eoin, siehe http://hyperphysics.phy-astr.gsu.edu/hbase/vect.html für Vektorkonstruktions-/Operationsformeln, um zu sehen, wo Erics Formeln herkommen. –