Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc. (https://www.delphipraxis.net/13182-preisfrage-kreis-beschreiben-ohne-pi-arc-sin-cos-etc.html)

Minz 12. Dez 2003 14:25


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

Tyrael Y. 12. Dez 2003 14:29

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 ;)

Minz 12. Dez 2003 14:30

Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
 
ähm bei Punkt 3 wirds interessant :mrgreen:

Chewie 12. Dez 2003 14:30

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.

Tyrael Y. 12. Dez 2003 14:30

Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
 
ich weiss :mrgreen:

Minz 12. Dez 2003 14:34

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

d3g 12. Dez 2003 14:35

Re: Preisfrage: Kreis beschreiben ohne Pi, Arc, Sin, Cos etc
 
Ein bisschen Pseudocode:
Code:
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
Der Satz des Pythagoras ist das einzige, was verwendet wird.

Chewie 12. Dez 2003 14:40

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.

Minz 12. Dez 2003 14:44

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:

Alibi 12. Dez 2003 14:44

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 21:26 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz