AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Begrenzung/Bereich einer Ellipse !!!
Thema durchsuchen
Ansicht
Themen-Optionen

Begrenzung/Bereich einer Ellipse !!!

Ein Thema von taza · begonnen am 16. Mär 2004 · letzter Beitrag vom 19. Mär 2004
Antwort Antwort
Seite 1 von 2  1 2      
taza

Registriert seit: 11. Mär 2004
Ort: Berlin
34 Beiträge
 
Delphi 5 Standard
 
#1

Begrenzung/Bereich einer Ellipse !!!

  Alt 16. Mär 2004, 16:52
Ist es möglich den Bereich einer Ellipse zu definieren, um sagen zu können, ob sich ein Punkt auf oder neben dieser befindet ??? Ich will auf eine Stelle in meinem Programm klicken und dann angezeigt bekommen, ob der Klick "getroffen" hat (also auf der Ellipse liegt) oder er "daneben gegangen" ist (also neben die Ellipse liegt)

Bitte um schnelle Antwort



[edit=r_kerber]Habe ich gestern abend ganz vergessen zu sagen: Die anderen Dreifach-Posts gelöscht! Mfg, r_kerber[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#2

Re: Begrenzung/Bereich einer Ellipse !!!

  Alt 16. Mär 2004, 17:34
Man könnte sich das ja leicht ausrechnen.
Ellipsengleichung: x²/a²+y²/b²=1 (gibt Ellipse um Nullpunkt mit a=Radius entlang x, b=Radius entlang y)

Diese Gleichung zum Beispiel nach y umstellen.

Aus dem Mausklick das x nehmen und in diese Gleichung für y einsetzen.
Das errechnete y mit dem y des Mausklicks vergleichen.

Beispiel:
Ellipse um den Punkt (100,100) mit Radius 50 entlang x und Radius 30 entlang y.

Delphi-Quellcode:
function MausklickDrin(x,y:integer):boolean; // x,y=Mauskoordinaten
var yEllipse:integer; // Mauskoordinaten
const Mitte_x=100; Mitte_y=100; a=50; b=30;
begin
  // 1. Mausklick in Relation zum Ellipsenmittelpunkt setzen:
  x:=x-Mitte_x; y:=y-Mitte_y;
  // 2. Abstand der Ellipse zur x_achse bei x ermitteln
  yEllipse:=sqrt((1-x*x/a/a)*b*b);
  // 3. Prüfen, ob y innerhalb von ±yEllipse liegt
  MausklickDrin:=(y>=-abs(yEllipse)) and (y<=abs(yEllipse))
end;
(ungetestet)
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
taza

Registriert seit: 11. Mär 2004
Ort: Berlin
34 Beiträge
 
Delphi 5 Standard
 
#3

Re: Begrenzung/Bereich einer Ellipse !!!

  Alt 16. Mär 2004, 19:01
Also wir es hier beschrieben wurde, klappt es leider nicht........schade eigentlich; na vielleicht gibt es ja noch weitere Varianten

Danke aber trotzdem schonmal.................... 8)
  Mit Zitat antworten Zitat
czapie

Registriert seit: 17. Nov 2002
Ort: Berlin
384 Beiträge
 
Delphi 5 Standard
 
#4

Re: Begrenzung/Bereich einer Ellipse !!!

  Alt 16. Mär 2004, 19:10
Das ist aber glaub ich der richtige Weg!
Guck es dir mal genauer an, alles andere wird nur schwieriger, aber warum bei "Windows API" ?

Czapie.
Was man zu verstehen gelernt hat, fürchtet man nicht mehr.
(Marie Curie)
http://www.cafes-in-berlin.com
  Mit Zitat antworten Zitat
taza

Registriert seit: 11. Mär 2004
Ort: Berlin
34 Beiträge
 
Delphi 5 Standard
 
#5

Re: Begrenzung/Bereich einer Ellipse !!!

  Alt 16. Mär 2004, 19:14
Oh; da hab' ich wohl gänzlich das falsche Forum erwischt; danke für den Hinweis !!!

  Mit Zitat antworten Zitat
taza

Registriert seit: 11. Mär 2004
Ort: Berlin
34 Beiträge
 
Delphi 5 Standard
 
#6

Re: Begrenzung/Bereich einer Ellipse !!!

  Alt 16. Mär 2004, 19:16
Bloß wo wird denn da jetzt angezeigt, ob der Klick sich nun auf oder neben der Ellipse befindet

  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#7

Re: Begrenzung/Bereich einer Ellipse !!!

  Alt 16. Mär 2004, 19:27
Zitat von taza:
wo wird denn da jetzt angezeigt, ob der Klick sich nun auf oder neben der Ellipse befindet?
Nirgendwo.
(IMHO sollte es ausreichen die Methode zu beschreiben, anstatt das Programm für Dich zu schreiben)
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#8

Re: Begrenzung/Bereich einer Ellipse !!!

  Alt 16. Mär 2004, 23:09
Zitat von taza:
Bloß wo wird denn da jetzt angezeigt, ob der Klick sich nun auf oder neben der Ellipse befindet

Das macht der Rückgabewert der Funktion; er ist true, wenn der Klick innerhalb der Ellipse ist.

Ich habe das ganze mal getestet und dadurch überarbeitet. Ein Fehler war die Wurzel. Da kam noch n abs() rein und ein round() drum rum. Außerdem hab ich die Endbedingung erweitert.

Beginne eine neue Anwendung, erzeuge einen Eventhandler für Form1.Create und Form1.OnPaint. Ersetze dann den ganzen Implementation-Code durch den folgenden:

Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
begin canvas.Ellipse(20,20,120,80) end;

function MausklickDrin(x,y:integer):boolean; // x,y=Mauskoordinaten
var yEllipse:integer; // Mauskoordinaten
const Mitte_x=70; Mitte_y=50; a=50; b=30;
begin
  x:=x-Mitte_x; y:=y-Mitte_y;
  yEllipse:=round(sqrt(abs((1-x*x/a/a)*b*b)));
  MausklickDrin:=(y>=-abs(yEllipse)) and (y<=abs(yEllipse)) and (x>=-a) and (x<=a)
end;

procedure TForm1.FormMouseDown;
begin if MausklickDrin(x,y) then form1.caption:='Ist drinelse form1.caption:='Ist nicht drin.end;
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
taza

Registriert seit: 11. Mär 2004
Ort: Berlin
34 Beiträge
 
Delphi 5 Standard
 
#9

Re: Begrenzung/Bereich einer Ellipse !!!

  Alt 17. Mär 2004, 20:47
Vielen Dank; ich hoffe, es fu´nktioniert jetzt!!!

  Mit Zitat antworten Zitat
taza

Registriert seit: 11. Mär 2004
Ort: Berlin
34 Beiträge
 
Delphi 5 Standard
 
#10

Re: Begrenzung/Bereich einer Ellipse !!!

  Alt 18. Mär 2004, 16:33
[/delphi]ich habe jetzt ein kleines Problem: der Source-Code funktioniert ja, aber ich will ihn in mein schon vorhandenes Programm intigrieren; und da zeigt er den Fehler an:

 MausklickDrin(x,y) --> er zeigt an: Operator oder Simikolion fehlt

was ist nun los?

Naja.........außerdem möchte ich es gern so hinbekommen, dass er es am besten mit Hilfe von:

 Canvas.TextOut(......................); ausgibt; und das auch nur, wenn man raufgeklickt hat, dh nicht schon wenn man drüber fährt!!!


Na vielleicht kriegt es ja noch jemand hin - danke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:21 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