AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

alle Integerkoordinaten eines Kreises

Ein Thema von Delphi-Narr · begonnen am 21. Dez 2009 · letzter Beitrag vom 24. Dez 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

alle Integerkoordinaten eines Kreises

  Alt 21. Dez 2009, 19:08
Hallo, ich suche nach einer Schleife, die alle Integerkoordinaten eines Kreises in einem Shape ausspuckt, wenn man ihr die Left, Top, Width und Heigthwerte des Shapes gibt.
Hab leider keine Ahnung, wie ich das angehen soll, da ich in Mathematik so erwas noch nicht gemacht habe...

Liebe Grüße!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: alle Integerkoordinaten eines Kreises

  Alt 21. Dez 2009, 19:14
0<i<2*Pi
X-Koordinate: sin(i)*r
y-koordinate: cos(i)*r
Markus Kinzler
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

Re: alle Integerkoordinaten eines Kreises

  Alt 21. Dez 2009, 19:24
Zitat von mkinzler:
0<i<2*Pi
X-Koordinate: sin(i)*r
y-koordinate: cos(i)*r
Oben wurden aber Integerkoordinaten erbeten.

Wegen der Transzendenz der Winkelfunktionen gibt es aber kaum welche. Auf Anhieb fallen mir nur der Mittelpunkt und die vier Punkte "oben", "unten", "links" und "rechts" ein. Dann gibt es noch ganz wenige Punkte, die bei "integrem" Winkel wenigstens eine rationale (gute Voraussetzung für integre) Koordinate haben: sin 30°=cos 60°=0,5 (analog die an 90° gespiegelten Winkel sowie alle negativen Pendants).

Also wird man sich mit Rundung (Funktion "round") behelfen müssen.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: alle Integerkoordinaten eines Kreises

  Alt 21. Dez 2009, 19:38
Eventuell könnte der Bresenham-Algorithmus gemeint sein.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.605 Beiträge
 
#5

Re: alle Integerkoordinaten eines Kreises

  Alt 21. Dez 2009, 19:38
Such mal nach dem Bresenham-Algorithmus. Der ist genau das, was Du willst.

Edith sagt: Zu langsam
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#6

Re: alle Integerkoordinaten eines Kreises

  Alt 21. Dez 2009, 20:14
Also wenn ich das jetzt richtig verstanden habe, dann muss das so gemacht werden:

Shape: Alle Werte = 100

Delphi-Quellcode:
var
SL:TStringlist;

...


while 0<i<2*pi do
  begin
       SL.Add(IntToStr(round(sin(i))));
       SL.Add(IntToStr(round(cos(i))));
  end;

Stimmt das so. Wenn die Werte nur ungefähr sind, reicht das völlig aus.
Ich aber wirklich ALLE Punkte, die IM Kreis liegen, also auch Mittelpunkt, Mittelpunkt -1 etc...
Wird dies durch diese Schleife erreicht?
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: alle Integerkoordinaten eines Kreises

  Alt 21. Dez 2009, 20:21
Dann hättest du anders fragen müssen, weil die Punkte im Kreis gehören nicht zum Kreis! In dem Fall langt es einfach jeden möglichen Pixel auf seinen Abstand zum Mittelpunkt hin zu überprüfen. Ist der > Width bzw. Height (welche ja gleich sein sollten, sonst ist's eine Ellipse), gehört der Pixel nicht zur Kreisfläche. Kreismittelpunkt sollte ja kein Problem darstellen, und der Vektor von einem Pixel p0 zum Mittelpunkt M ist einfach (M-p0). Davon die Länge, und du bist fast fertig.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#8

Re: alle Integerkoordinaten eines Kreises

  Alt 21. Dez 2009, 20:45
Ja gut, also ich hab mich unverständlich ausgedrückt...
Ich muss nicht die Koordinaten haben, sondern möchte nur wissen, ob bestimmte Koordinaten X Y im Kreis liegen. Das ginge bestimmt auch nur mit den Umfangskoordinaten.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: alle Integerkoordinaten eines Kreises

  Alt 21. Dez 2009, 20:53
http://www.delphipraxis.net/internal...t.php?t=148748
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#10

Re: alle Integerkoordinaten eines Kreises

  Alt 21. Dez 2009, 21:33
Da blick ich nicht so ganz durch...
Da diese Kreise unvorhersehbar auch nicht-integer Radien haben, klappt das doch nicht, oder?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:14 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