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 1 von 4  1 23     Letzte »    
mimi

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

auf linen klicken

  Alt 9. Nov 2006, 21:42
Hallo,
seit stundne versuche ich eine lösung zu finden wie ich checken kann ob auf eine line geklick wurden ist oder nicht.
z.b.
start:33,26
colli:74,67
end:96,86

wie kann ich am besten prüfen ob der colli(der klick punkt) auf dieser line steht oder nicht... ich habe mir bei wikipedia was durchgelesen aber das verstehe ich leider nicht, weil es in mahte geschrieben ist(ist anscheind eine eigene sprache)...
kann mir jemmand genau erklären wie ich das schreiben muss?
mir geht es nicht darum den qullcode zuhaben sondern ich möchte verstehen wie sowas geht von der technik her... ich hoffe ihr wist was ich meine im anahng ist noc hein beispiel bild(was hier vergößrst solltet):
Miniaturansicht angehängter Grafiken
unbenannt_722.jpg  
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von hibbert
hibbert

Registriert seit: 26. Aug 2003
Ort: Berlin
262 Beiträge
 
Delphi 2005 Personal
 
#2

Re: auf linen klicken

  Alt 9. Nov 2006, 22:01
hi,
ich habe zwar den Artikel nicht gelesen, aber ich könnt mir folgendes denken:
wenn du eine bestimmte Hintergrundfarbe hast, dann kasst du doch einfach die Farbe die unter dem "colli" is abfragen. Ist diese gleich der Hintergrundfarbe dann ist die Linie nicht geklickt.
  Mit Zitat antworten Zitat
mimi

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

Re: auf linen klicken

  Alt 9. Nov 2006, 22:12
so einfach geht das leider nicht. ich möchte ein grafik programm schreiben wo verschiende objekte auf ein hintergrund sein können und das geht soweit.

wie ich sowas mit rechtecken mache weiß ich..... nur halt mit linen weiß ich das leider nicht
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#4

Re: auf linen klicken

  Alt 9. Nov 2006, 22:49
Hallo,

"auf linien klicken" = PointInLine, eventuell kannst du ja russisch
forum.pascal.net.ru > Задачи
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: auf linen klicken

  Alt 9. Nov 2006, 23:06
Du hast einen Anstieg m von dem Ausgangspunkt zum Endpunkt der Linie. Wenn nun der Anstieg m vom Ausgangspunkt zu deinem Mauspunkt gleich gross ist, dann sollte der punkt auf der Linie liegen. Nun musst du nur noch testen, ob der Mauspunkt nicht vor dem Anfang oder nach dem Ende der Linie liegt. Daher: Einfach prüfen ob der Mauspunkt innerhalb des Rechtecks liegt. Das Rechteck ergibt sich aus den Koordinaten des Anfangs- und Endpunktes der Linie.

Nur mal so theoretisch gesprochen für eine Lösung.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: auf linen klicken

  Alt 10. Nov 2006, 11:28
mit einer einfachen Verhältnisgleichung sollte es auch lösbar sein. Der Ursprung der Linie ist 0, 0 das Ende der Linie liegt bei x1, y1
Dann hasst du die Mauskoordinaten x2, y2
wenn du jetzt x1 und y1 ins Verhältnis setzt zu x2 und y2 kannst du errechnen ob dies stimmt
Code:
x1   x2
-- = --
y1    ?
Wenn Fragezeischen gleich dem Wert von y2 ist (also der Errechnete Wert mit der Mausposition überein stimmt) bist du auf der Linie. Je nach Linienstärke natürlich etwas tolleranz zulassen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
mimi

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

Re: auf linen klicken

  Alt 10. Nov 2006, 17:08
wenn ich dich recht verstehe müste ich folgendes schreiben um zu testen ob ein line angeklickt wurden ist oder nicht:
Delphi-Quellcode:
if (X1 div Y1) = (x2 div y2) then
ist makiert
else
nichtmakiert
problem dabei ist nur das meine ursprungs position nicht bei 0,0 ist sondern irgenwo auf dem monitor müste ich das dann noch verändern ?

:Muetze1
das verstehe ich nicht was du meinst.....
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: auf linen klicken

  Alt 10. Nov 2006, 17:57
Zitat von mimi:
:Muetze1
das verstehe ich nicht was du meinst.....
Ist der gleiche Vorschlag wie der des Gummbärchens.

@Muetze1 & SirThornberry: Für einen exakten Klick mag das reichen, aber der Fall ist wohl _äußerst_ unwahrscheinlich . Mit der Toleranz wird das nicht funktionieren, der Mausbereich ist dann auf der einen Seite dünn wie ein Faden und auf der anderen aufgefächert.

@mimi: Tut mir leid, aber es _geht_ einfach nicht einfacher als mit Vektoren.
Startpunkt A, Endpunkt B, Maus C

Du musst das Lot von C auf AB konstruieren. Mit dem Skalarprodukt kannst du überprüfen, ob der Lotfußpunkt überhaupt auf AB liegt: 0 <= ((B - A) . (C - A)) / |A| <= |B|. Nun musst du noch die Lotlänge errechnen, zB per Pythagoras, und überprüfen, ob sie kleiner als die Toleranz ist.
Zusätzlich kannst du noch prüfen, ob |C - A| oder |C - B| < Toleranzwert ist, ob C also in einem Kreis um einen der Linienpunkte liegt.

Alles aus dem Kopf, habe ich so oder so ähnlich in meinem Bézier-Program benutzt.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
mimi

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

Re: auf linen klicken

  Alt 10. Nov 2006, 21:05
vielen dank für eure hilfe. aber leider verstehe ich nicht viel von geometry. nur das einfachsts.

Ich weiß z.b. wie ich eine line zeichnen kann(also selbst ohne lineTo und MoveTo) und wie ich eine collision auf ein rechteck prüfen kann... mehr leider nicht...
kenntst du oder einer von euch eine seite wo "computer geometry" beschrieben wird ?
(in einfachen worten gefasst) und halt auf deutsch....

das währe praktisch weil ich möchte ja verstehen wie das funktioniert und nicht einfach code nehmen den es schon gibt !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: auf linen klicken

  Alt 10. Nov 2006, 22:09
Einfacher als mit Gummibärchens lösungs gehts aber leider nicht
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 05:51 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