AGB  ·  Datenschutz  ·  Impressum  







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

auf linen klicken

Ein Thema von mimi · begonnen am 9. Nov 2006 · letzter Beitrag vom 23. Dez 2006
Antwort Antwort
Seite 2 von 4     12 34      
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#11

Re: auf linen klicken

  Alt 10. Nov 2006, 22:25
hier habe ich letzten ein code geschrieben(abgeschrieben aus einem buch und leicht angepasst):
Delphi-Quellcode:
 for i:=0 to High(obj) do begin
    with obj[i] do begin
      xWeg:=zx-px; yWeg:=zy-py;

      strecke:=Sqrt(Sqr(xweg)+Sqr(yweg));
      schritte:=Strecke /1;

      xdiff:=Xweg / Schritte; ydiff:=yweg / Schritte;

      if zx < px then begin
        px:=Round(px+xDiff);
      end
      else
        isx:=True;

      if zy < py then begin
        py:=round(py + yDiff);
      end
      else
        isY:=True;
  

      if (isx = true) and (isy= true) then begin
        Spray(DXDraw1.Surface.Canvas,round(px),round(py),20,clred);
        DXDraw1.Surface.Canvas.Release;
      end;

      DXImagelist1.Items[0].Draw(dxdraw1.Surface,round(px),round(py),0);
    end;
  end;
da bei jedem durchlauf die position um die angeben xdiff und ydiff werte erhört nur ich weiß leider nicht wie ich das um setzten könnte... weil eine schleife wollte ich eigetnlich nicht starten !

und gewisse tolleranzen würde ich auch gut finden !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#12

Re: auf linen klicken

  Alt 12. Nov 2006, 14:28
Hallo,

Die Idee, den Anstieg der Geraden mit dem Anstieg zum clickpoint zu vergleichen hat einen schwer wiegenden Nachteil, wenn ein Toleranzbereich definiert werden soll. Da würde sich die Clicktoleranz entlang der Geraden ändern.

Einen Tolranzbereich (Pickbox) braucht es aber für die Bedienbarkeit des progs.

Eine Schleife braucht es nicht, um fest zu stellen, dass der clickpoint auf der Linie liegt, das wird zu aufwändig.

Besser ist es, einfach den Abstand des clickpoints zur line zu berechnen und wenn der klein genug ist, die line als angeclickt zu betrachten. Das geht auch ohne Vektorrechnung.

grüsse
der flossinger
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#13

Re: auf linen klicken

  Alt 12. Nov 2006, 16:27
@flossinger
könntes du bitte ein beispiel machen
weil so ganz verstehe ich das noch nicht...

ich werde heute mal im internet nach einer seite suchen wo Geometry mit dem computer verbunden ist!
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#14

Re: auf linen klicken

  Alt 12. Nov 2006, 16:58
Ja bitte gerne:

Ich habe eine line von x1,y1 nach x2,y2.
Dann clicke ich und habe den clickpunkt x3,y3. Den ergänze ich mit einem weitern Punkt, so dass ich eine zweite line habe, die senkrecht auf die erste steht.
Delphi-Quellcode:
  image1.canvas.moveto(x3,y3);
  x4:=x3+(y2-y1);
  y4:=y3-(x2-x1);
// image1.canvas.lineto(x4,y4); // test
teste das mal, und du wirst sehen, dass die lines senkrecht zueinander stehen.

Als nächstes berechnest du den Schnittpunkt der beiden Geraden, und du kannst den Abstand daraus ableiten.

grüsse,
der flossinger
  Mit Zitat antworten Zitat
flossinger

Registriert seit: 22. Aug 2005
Ort: südlich der Alpen
109 Beiträge
 
Delphi 5 Standard
 
#15

Re: auf linen klicken

  Alt 13. Nov 2006, 19:40
Habe noch einen screenshot dazu gemacht:

so kann das aussehen.

grüsse,
der flossinger
Miniaturansicht angehängter Grafiken
screen01_170.gif  
  Mit Zitat antworten Zitat
TomKa

Registriert seit: 13. Nov 2006
3 Beiträge
 
#16

Re: auf linen klicken

  Alt 14. Nov 2006, 19:42
Hey wo ist dann der Schnittpunkt genau?

Tomka
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#17

Re: auf linen klicken

  Alt 14. Nov 2006, 20:23
hier mal eine Lösung:
Delphi-Quellcode:
fLinie := Rect(50, 50, 200, 80);
[...]
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  lPoint : TPoint;
  lNeededY: Integer;
begin
  X := X - fLinie.Left;
  Y := Y - fLinie.Top;
  lPoint := Point(fLinie.Right - fLinie.Left, fLinie.Bottom - fLinie.Top);
  if (X >= 0) and (Y >= 0) and (X < lPoint.X) and (Y < lPoint.Y) then
  begin
    lNeededY := Round(X * lPoint.Y / lPoint.X);
    if (lNeededY > Y - 5) and (lNeededY < Y + 5) then
      caption := 'Linie getroffen'
    else
      caption := 'Linie verfehlt';
  end
  else
    caption := 'außerhalb der Linie';
end;
fLinie ist vom Typ "TRect" wobei TopLeft die den Startpunkt angibt und BottomRight den EndPunkt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#18

Re: auf linen klicken

  Alt 14. Nov 2006, 20:30
Der Ansatz ist leider noch ungenauer als der letzte . Je senkrechter die Linie desto kleiner der Klickbereich (bei 90/270° dann ganz wech). Wobei du das X >= 0 weglassen können solltest.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#19

Re: auf linen klicken

  Alt 14. Nov 2006, 20:47
wenn "X >= 0" weggelassen wird ist es möglich auch links neben der Linie zu klicken wo sie gar nicht ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#20

Re: auf linen klicken

  Alt 14. Nov 2006, 20:59
Achje, habs verdreht. Stattdessen müsste du "Y >= 0" "Y > 0" heißen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 00:56 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