Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 13.12.2008, 15:11 Titel: Linien verbinden |
|
|
Hallo,
Ich hab mal eine Frage bzw. bräuchte Hilfe.
Wenn ich mehrere Linien auf dem Bildschirm zeichne (Mit Maus wie bei einem Malprogramm) und dann per Maus eine der Linien mit einer neuen Linie mittendrin verbinden möchte (wie bei einem Vektorgrafikprogramm).
Wie berechne ich bzw. kriege ich heraus auf welcher Linie sich die Maus befindet (die Koordinaten der Linien sind alle in einem Array gespeichert) um einen neuen Zwischenpunkt zu setzen? |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.12.2008, 15:39 Titel: |
|
|
schnittpunkt gerade-gerade oder gerade-punkt anweden:
http://www.freebasic.net/forum/viewtopic.php?t=8655 _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 13.12.2008, 15:41 Titel: |
|
|
Hallo
Mit Anfangs- und Enpunkt der Linie kannst du ihre Geradengleichung in der Zweipunkteform erstellen und dann prüfen, ob die Gleichung aufgeht, wenn man die aktuellen Mauskoordinaten einsetzt. Gerundet natürlich, weil die Maus ja immer nur ganzzahlige Werte liefert.
Quelle: http://de.wikipedia.org/wiki/Geradengleichung
Für x1,2 und y1,2 setzt du die Koordinaten des Enfangs- und Endpunktes der Linie ein, für x und y die Mauskoordinaten. Geht die Gleichung auf bzw. liegt die Abweichung unterhalb eines gewissen Toleranzwertes, wird die Linie "angeklickt".
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 13.12.2008, 20:44 Titel: |
|
|
Sonst vom meinem alten MiniCAD-Projekt den Pick-Prozessor herausgraben:
http://beilagen.dreael.ch/QB/PICK_ROU.BAS
Das Ganze ist für den QB 4.5-Compiler geschrieben. Portierungshinweise FreeBasic: Maussteuerung sinnvollerweise durch die FB-eigenen Befehle ersetzen, ansonsten die eigentlichen Berechnungs-SUB-Routinen müssten 1:1 übertragbar sein.
Dort hatte ich mich auch diesem Thema gewidmet, also das Berechnen, ob ein Objekt ein vorgegebenes Rechteck überschneidet, sich komplett darin befindet oder ausserhalb liegt.
Übrigens werden dort auch Kreise und Kreisbogen ebenfalls abgedeckt. Noch als Hinweis zur Bedienung des obigen Demonstrationsprogramms: Je nach Ziehrichtung der Maus findet ein SELECT bzw. UNSELECT statt und ebenso ein INSIDE (AutoCAD: "Fenster") bzw. INTERSECT (AutoCAD: "Kreuzen") statt:
Links oben -> Rechts unten = PICK INTERSECT
Rechts oben -> Links unten = PICK INSIDE
Links unten -> Rechts oben = UNPICK INTERSECT
Rechts unten -> Links oben = UNPICK INSIDE
Am besten mit obigem Programm ruhig einmal etwas ergibiger herumspielen!
@Nitroxis: Einige Tipps für Dein Projekt: Klick mit der Maus = PICK INTERSECT, wobei das Rechteck mittels einer von Dir vordefinierten Fenstergrösse berechnet werden muss und der Mausklick den Mittelpunkt des Rechtecks darstellt. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 14.12.2008, 13:34 Titel: |
|
|
Danke für die Hilfe! |
|
Nach oben |
|
 |
|