Koordinaten jedes Kästchens des Kreisrandes berechnen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
algorithmus
berechnen
berechnung
code
frage
gestreckter kreis
high
http
kreis
kreisen
methode
mittelpunkt
pixel
polieren
position
punkt
radius
sinus
sonstige programmiersprachen
url
-
Hallo, ich weiß nicht, ob ich das Thema in "Schule, Uni und Ausbildung" oder in "PHP & MySQL" packen soll. Falls der schnellste Mod der Meinung ist, dass hierbei zu viel gerechnet wird, kann er es gerne verschieben, ich bin mir auch nicht sicher, ob es im Schulforum nicht vll. besser aufgehoben wäre.
Mein Problem zu beschreiben würde zu lange dauern, als dass es für die Leser erträglich wäre. Ich denke, ich kann es selbst lösen, wenn ihr mir bei einem Detail der Berechnung helft. Es gibt ein Rasterfeld mit einer Größe von 500x500 Kästchen (frei gewählter Wert). Jetzt soll dort ein Kreis mit einem Radius von 200 Kästchen gezeichnet werden. Als Mittelpunkt des Kreises wählen wir die Position x (vom Linken Rand aus) = 220, y = 260. Ich habe unterschiedliche Zahlenwerte für die Position gewählt, um die Brechungsmethode dann später besser verstehen und übernehmen zu können. Jetzt soll ein Kreis berechnet werden. Ich brauche die Koordinaten jedes Kästchens des Kreisrandes. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mh, Kästchen? Kreise? Rasterung? ...
Ich denke mal, dir wird das hier weiterhelfen: http://de.wikipedia.org/wiki/Bresenham-Algorithmus.
Ansonsten musst du deine Frage näher spezifizieren oder ich meine Glaskugel besser polieren :-) -
weil ja pixel auch letztendlich nur ein Rasterfeld sind werfe ich mal meine Codesammlung aus freebasic rein:
Methode 1: (der klassiker)
Hierbei wird mit Cosinus/sinus ein Punkt um 360° gedreht.
Es wird also letzendlich nicht wirklich ein Kreis sondern ein vieleck berechnet.
Das hat den Nachteil das die Zahl der ecken je nach radius erhöht werden müsste (weil sonst Lücken entstehen)
CONST PI = ATN(1)*4 CONST Deg2Rad = ATN(1)/45 '=PI/180 dim as integer h=150 'Höhe in Pixel dim as integer b=150 'Breite in Pixel dim as integer x=200,y=200 ' position(mitte) des kreises dim Beta as integer for Beta=0 to 360 pset(x+cos(Beta*Deg2Rad)*b,y-sin(Beta*Deg2Rad)*h) next beta
cos=cosinus berechnen, sin= sinus berechnen,pset(x,y) =zeichne einen punkt an position x/y
Methode 2: (weniger rechenintensiv)
Bei dieser Methode wird eigentlich immer nur ein viertelkreis berechnet und dann 3mal gespiegelt.
wide = 1 'Breite 100% (gestreckter Kreis) high = 1 'H”he 100% BCircle(320, 250, 200, 14) 'Kreis um den Mittelpunkt (320,175) mit dem Radius 200 'und der Randfarbe gelb=14 SLEEP 3000 end ' SUB BCircle (xc as integer, yc as integer, r as integer, c as integer) dim as integer x = 0, d = 2 * (1 - r), W = 2 * wide \ high do while r >= 0 PSET (xc + x, yc + r), c PSET (xc + x, yc - r), c PSET (xc - x, yc + r), c PSET (xc - x, yc - r), c IF (d + r) > 0 THEN r = r - 1: d = d - W * r - 1 IF x > d THEN x = x + 1: d = d + 2 * x + 1 loop END SUB
Falls Du fragen zum verständniss hast, frag.
Vielleicht hilft es Dir ja....
edit:
Ich denke die Frage ist am besten in Sonstige Programmiersprachen unterzubringen da sie ja nicht von der verwendeten (Programmier-/Beschreibungs-)sprache abhängig ist
Beitrag zuletzt geändert: 12.9.2010 20:40:25 von simuliertes -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage