kostenloser Webspace werbefrei: lima-city


Koordinaten jedes Kästchens des Kreisrandes berechnen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    das-koenigreich

    das-koenigreich hat kostenlosen Webspace.

    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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 :-)
  4. 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
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!