Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi einen Kreis zu Fuß zeichen (https://www.delphipraxis.net/29720-einen-kreis-zu-fuss-zeichen.html)

Matze 13. Sep 2004 22:05

Re: einen Kreis zu Fuß zeichen
 
Wie?

Kann man sagen

LineTo = LineTo + MoveTo? :gruebel:

Falls ja, dann stimmt Alcs Lösung natürlich, falls nein, dann verstehe ich sie nicht.

MoveTo (Hinspringen)
LineTo (von MoveTo aus zeichnen) oder nicht? :gruebel:

supermuckl 13. Sep 2004 22:08

Re: einen Kreis zu Fuß zeichen
 
wenn du ohne moveto arbeitest ( am anfang einmal )
dann ziehst du ne linie von 0,0 bis zu deinem ersten lineto

wenn du das unschöne ding da weghaben willst dann solltest du erstmal mit moveto an deinen anfang im kreis springen und dann weiter machen mit lauter lineto's

ansonsten braucht man kein moveto .. ausser man will halt ohne eine zwischenlinie ziehen irgendwo anderst ne neue linie ziehen

Nikolas 13. Sep 2004 22:08

Re: einen Kreis zu Fuß zeichen
 
Moveto -> setztden Stift an die übergebene Position
Lineto -> zeichnet eine Linie von der aktuellen Position zur übegebenen Position und setzt den Stift dorthin [steht aber auch alles so in der OH ]

alcaeus 13. Sep 2004 22:18

Re: einen Kreis zu Fuß zeichen
 
Hi Jungs,

Zitat:

Zitat von Chimaira
@Alcaeus: :coder: better :mrgreen: :zwinker: :cheers:

Ist noch zu früh :roll: :mrgreen:

Und zum Canvas & co.: "It's not a feature, it's a bug". So ist es kein Copy&Waste-Code :mrgreen:

Das Problem muss aber nicht notwendigerweise mit Trigonometrie gelöst werden:
Delphi-Quellcode:
for i := mx-r to mx+r do
begin
  y1 := sqrt(sqr(x)-sqr(r));
  y2 := -sqrt(sqr(x)-sqr(r));
end;
Damit erhälst du die Punkte, welche du dann nur verbinden musst. Der Weg mit y1 und y2 ist nötig, da man eine quadratische Funktion umgeformt hat und damit eine Lösung fallen lassen würde. (ich geh hier nicht weiter ins Detail :roll:)

Greetz
alcaeus

Matze 13. Sep 2004 22:19

Re: einen Kreis zu Fuß zeichen
 
@Toxman: Ich kenne die Funktion, OH? Das sagst du mir?

Das habe ich doch vorher gesagt, musst nur lesen. ;)

Nikolas 13. Sep 2004 22:24

Re: einen Kreis zu Fuß zeichen
 
Wo hast du was von der OH gesagt? Es kam mir auch komisch vor, aber
Zitat:

LineTo = LineTo + MoveTo?

Falls ja, dann stimmt Alcs Lösung natürlich, falls nein, dann verstehe ich sie nicht.

MoveTo (Hinspringen)
LineTo (von MoveTo aus zeichnen) oder nicht?
klang etwas seltsam :gruebel: :gruebel:

Matze 13. Sep 2004 22:31

Re: einen Kreis zu Fuß zeichen
 
Naja, ich meinte nur:

MoveTo (Hinspringen)
LineTo (von MoveTo aus zeichnen) oder nicht?


Und deshalb wundere ich mich, wieso nur einmal MoveTo bei Alc steht und zig Mal LineTo. :wink:

dizzy 13. Sep 2004 22:51

Re: einen Kreis zu Fuß zeichen
 
Weil LineTo auch die aktuelle Position an das Ende der Linie setzt ;).

Ist im Grunde ein MoveTo, nur dass ne Linie mitgezogen wird.

Robert Marquardt 14. Sep 2004 06:50

Re: einen Kreis zu Fuß zeichen
 
Ich wuerde mich mal mit dem Bresenham-Algorithmus beschaeftigen.
Der kann nicht nur Linien zeichnen sondern auch Ellipsen/Kreise.
Alles ohne Floating Point Operationen.
Der Algorithmus liefert sogar Antialiasing-Informationen.

Mr Whoopee 5. Okt 2004 10:57

Re: einen Kreis zu Fuß zeichen
 
Hallo,

bei mir geht der Quelltext vorn und hinten nicht :(.
Delphi-Quellcode:
return Deg*Pi/180;
Da meckert er schon mit return. ([Fehler] Unit1.pas(27): Undefinierter Bezeichner: 'return')

Delphi-Quellcode:
function ZeichneKreis(mx, my: Integer; r: Real);
hier erzählt er mir: "[Fehler] Unit1.pas(27): Funktion benötigt Ergebnistyp".
Des weiteren:
[Fehler] Unit1.pas(32): Undefinierter Bezeichner: 'MoveTo'
[Fehler] Unit1.pas(35): Undefinierter Bezeichner: 'DegToRad'
[Fehler] Unit1.pas(37): Inkompatible Typen: 'HDC' und 'Extended'
[Fehler] Unit1.pas(39): Inkompatible Typen: 'HDC' und 'Extended'

Kamm mir bitte jemand helfen?


Whoopee


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr.
Seite 2 von 3     12 3      

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