![]() |
Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc.
Hehe gibt keinen Preis aber dafür die Frage :mrgreen:
habe da schon eine Lösung fertig, mich interessiert nur, obs da noch was cleverererereres gibt. Also Pi und Arc, Cos, Sin, Tan und was da sonst noch so gibt sind verboten. Es soll die Möglichkeit geboten werden, die x/y-Werte der Punkte, die auf dem Kreis liegen zu bekommen. Gruß Minz |
Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
1. einen Mittelpunkt festlegen
2. einen Radius festlegen 3. vom Mittelpunkt ausgehend alle Punkte finden, die vom Mittelpunkt so weit wie der Radius sind fettisch ;) |
Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
ähm bei Punkt 3 wirds interessant :mrgreen:
|
Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
Alle Werte, die auf dem Kreis liegen, oder nur alle in einer vorgegebenen Liste?
Alle wirst du nie bestimmen können, da es unendlich viele gibt. Hast du eine Liste und musst entscheiden, ob ein Punkt auf einem Kreis liegt oder nicht, brauchst du nur den Mittelpunkt und den Radius. Ist der Betrag des Abstands zw. Mittelpunkt und gegebenem Punkt (Pythagoras!) gleich dem Radius, so liegt der Punkt auf dem Kreis, andernfalls nicht. |
Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
ich weiss :mrgreen:
|
Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
@Chewie
sagen wir so, es soll mit der Lösung ein Kreis auf den Bildschirm gemalt werden. 1. der Kreis soll Rund sein :mrgreen: 2. er soll durchgängig sein |
Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
Ein bisschen Pseudocode:
Code:
Der Satz des Pythagoras ist das einzige, was verwendet wird.
Read CenterX, CenterY, Radius
Read Epsilon // Fehlerschranke, klein wählen FOR I = 0 TO MaxX FOR J = 0 TO MaxY IF Radius - Epsilon / 2 < SQRT((CenterX - I)^2 + (CenterY - J)^2) < Radius + Epsilon / 2 SetPoint I, J END END |
Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
OK, also alle Punkte wirst du nie bekommen, aber für die grafische Ausgabe muss deine Punktauflösung nicht höher als die Bildschirmauflösung sein, um einen Kreis darzustellen. Überleg dir also einen geeigneten Punktabstand. Dann fängst du mit einem Punkt an, der sicher auf dem Kreis liegt (z.B. (x,y+r)), erhöhst in Schleifen den x- und y-Wert um deinen gewählten Abstand und prüfst, ob der Punkt auf dem Kreis liegt.
Dass diese Variante unperformant wie sonstwas ist, ist klar, oder? Optimieren könnte man sie, indem man bedenkt, dass ja die minimalen und maximalen x-Koordinaten feststehen: - minimum-x: x-r - maximum-x: x+r - minimum-y: y-r - maximum-y: y+r So hättest du deinen Suchbereich mal auf ein Quadrat eingeengt, was den Aufwand deutlich verringert. Nun könnte man noch irgendwie versuchen, den Suchbereich noch weiter einzuengen, allerdings fällt mir da spontan auch keine Lösung ein. |
Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
@d3g erklär doch mal
@chewie ist eine Lösung, mag ich aber net :mrgreen: |
Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
Aus der Ellipsengleichung:
x^2/a^2 + y^2/b^2 = 1 den Ellipsensonderfall Kreis (a und b sind gleich, hier r für Radius): (x^2+^2)/r^2=1 Fertig. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz