AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kreis zeichen --> sieht komisch aus

Ein Thema von Christian18 · begonnen am 4. Aug 2007 · letzter Beitrag vom 4. Aug 2007
Antwort Antwort
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#1

Kreis zeichen --> sieht komisch aus

  Alt 4. Aug 2007, 15:42
Hallo,

ich zeichne einen Kreis mit einer Routine, die ich mir selber ausgedacht habe. Ich finde der Kreis sieht ein bisschen kompisch aus. Was kann man dagegen tun?

Hier mein Code:

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
  var i : TImage; // Image zum Anzeigen dees Kreises
      j : Integer; // Schleifenvariable
      r : Integer; // Radius
      x, y : Real; // x und y Werte des Kreises
begin
  // Parameter setzen
  i:=Image1;
  r:=i.Width div 2;

  // Berechnungen
  for j := 0 to 360 do
    begin
      x:=cos(DegToRad(j)) * r + i.Width / 2;
      y:=sin(DegToRad(j)) * r + i.Height / 2;

      i.Canvas.LineTo(Round(x), Round(y));
    end;
end;
Ich finde der sieht besser aus!!!

Delphi-Quellcode:
procedure TForm1.BitBtn2Click(Sender: TObject);
  var i : TImage;
begin
  i:=Image2;

  i.Canvas.Ellipse(0, 0, i.Width, i.Height);
end;
MFG Chris
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#2

Re: Kreis zeichen --> sieht komisch aus

  Alt 4. Aug 2007, 15:45
Bresenham-Algorithmus
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#3

Re: Kreis zeichen --> sieht komisch aus

  Alt 4. Aug 2007, 15:52
Eventuell sagst du uns auch wie er komisch aussieht (ein Screenshot wäre eine Lösung).

Ich würde das Ganze so machen 2 Funktionen auf stellen um den Kreis zu Zeichen eine Für die Unterseite und eine Für die Oberseite. Die Funktion sieht dann wie folgt aus:

Code:
f(x) = sqrt(r² - x²) // basiert auf dem Satz des Pythagoras
Damit sparst du die sin und cos die viel Rechen Zeit beanspruchen.

mfg, Björn
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#4

Re: Kreis zeichen --> sieht komisch aus

  Alt 4. Aug 2007, 15:55
Naja, deshalb habe ich ja den code reingestellt, da kann dann jeder selber gucken.
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#5

Re: Kreis zeichen --> sieht komisch aus

  Alt 4. Aug 2007, 16:00
Ich habe nochmal was ausprobiert. Wenn ich nicht jeden Punkt berechne sondern nur jeden achten, dann sieht es auch besser aus. und schneller gehts auch noch xD

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
  var i : TImage; // Image zum Anzeigen dees Kreises
      j : Integer; // Schleifenvariable
      r : Integer; // Radius
      x, y : Real; // x und y Werte des Kreises
begin
  // Parameter setzen
  i:=Image1;
  r:=i.Width div 2;

  // Berechnungen
  for j := 0 to 45 do
    begin
      x:=cos(DegToRad(j * 8)) * r + i.Width / 2;
      y:=sin(DegToRad(j * 8)) * r + i.Height / 2;

      i.Canvas.LineTo(Round(x), Round(y));
    end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
  var i : TImage;
begin
  i:=Image2;

  i.Canvas.Ellipse(0, 0, i.Width, i.Height);
end;
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Kreis zeichen --> sieht komisch aus

  Alt 4. Aug 2007, 17:00
Könnte man nicht irgendwie den Umfang berechnen, und daraus die Anzahl der Schritte ableiten, die nötig sind, um den Kreis zu zeichnen? Weiß allerdings nicht, wie das bei einer Ellipse geht
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Kreis zeichen --> sieht komisch aus

  Alt 4. Aug 2007, 17:12
Hi,
mit dem Code wirst du auch keinen exakten Kreis erzeugen, sondern nur ein regelmäßiges 360-eck. Je größer du jetzt den Radius machst, desto deutlicher wird das. Wenn du einen genaueren Kreis haben willst, musst du die Anzahl der Iterationen erhöhen.
Mich wundert, dass der Kreis bei jedem achten Punkt mehr nach einem Kreis aussehen, aber ich habe gerade kein Delphi in der Nähe und ohne Screenshot sehe ich auch den Unterschied nicht.

Der Vorschlag über eine Funktion nach Satz des Pythagoras wird dir wahrscheinlich bessere Ergebnisse liefern. Das solltest du zumindest mal ausprobieren.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#8

Re: Kreis zeichen --> sieht komisch aus

  Alt 4. Aug 2007, 17:28
Also nochmal poste ich den Link zum Bresenham-Algorithmus nicht.

Der Algorithmus ist deswegen so schnell, weil er nur 1/8 des gesamtkreises berechnen muss. Die restlichen achtel werden einfach gespiegelt. Und er ist deswegen so genau, weil er die ideale Annäherung an einen Kreis berechnet.

Wenn Kreis, dann Bresenham.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:37 Uhr.
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