Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  punkt -> linie

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  punkt -> linie (791 mal gelesen)
marvin101010
Mitglied
ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)


Sehen Sie sich das Profil von marvin101010 an!   Senden Sie eine Private Message an marvin101010  Schreiben Sie einen Gästebucheintrag für marvin101010

Beiträge: 562
Registriert: 22.01.2003

Pentium 4
Windows XP
Autocad 2002
Autocad 2002LT + Extender
ADT 3.3
ArchiCAD

erstellt am: 12. Sep. 2003 13:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ich habe ein kleines problem für dessen lösung ich in diesem forum noch nichts gefunden habe.

ist:    ich habe zwei parallele linien und einen punkt!

will:  welche der beiden linien liegt dem punkt am nächsten?

um das ganze etwas interessanter zu gestalten, sind vlax-befehle "verboten"

dank schon mal und wie immer sind mir ansätze wichtiger als lösungen!! 

------------------
.......good vibrations make the world go round 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 12. Sep. 2003 14:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für marvin101010 10 Unities + Antwort hilfreich

Hallo Marvin,

etwas Geometrie ;-)
Du kannst dir ja einen Vektor der linie berechnen, somit auch einen rechtwinkligen dazu. Mit hilfe dieser Richtung kannst du einem 2. Punkt berechnen durch den vom bekannten Punkt beginnend eine Strecke senkrecht auf die Linien stoßen würde. Damit brechnest du den Schnittpunkt (inters ..) und kannst dir dann die Entfernung des Schnittpunkts zum Punkt ausrechnen. Vergleichen, fertig!

Achso (beinah vergessen) Vectoren am besten mit dem Geometrierechner ermitteln.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
10, 9 - Der Countdown läuft. Wofür?... ./.
Ich bin vom 07.-10.10. in Stuttgart dabei.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dabrunz
Mitglied



Sehen Sie sich das Profil von Dabrunz an!   Senden Sie eine Private Message an Dabrunz  Schreiben Sie einen Gästebucheintrag für Dabrunz

Beiträge: 127
Registriert: 28.05.2003

erstellt am: 15. Sep. 2003 13:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für marvin101010 10 Unities + Antwort hilfreich

Zitat:

Du kannst dir ja einen Vektor der linie berechnen, somit auch einen rechtwinkligen dazu. Mit hilfe dieser Richtung kannst du einem 2. Punkt berechnen durch den vom bekannten Punkt beginnend eine Strecke senkrecht auf die Linien stoßen würde.

Was ist, wenn der 2. Punkt (auch Lot) nicht auf der Linie zu finden ist?

Zitat:

Damit brechnest du den Schnittpunkt (inters ..) [..]

Wenn ich dich bisher richtig verstanden habe, dann hast du den doch schon - oder?

Zitat:

[..] und kannst dir dann die Entfernung des Schnittpunkts zum Punkt ausrechnen. Vergleichen, fertig!

Ja.

Zitat:

Achso (beinah vergessen) Vectoren am besten mit dem Geometrierechner ermitteln.

Da bevorzuge ich dann doch eher etwas Mathematik pur:

<a,b> soll das Skalarprodukt der beiden Vektoren a und b sein und |a| bezeichne die Länge (auch: "den Betrag") eines Vektors a.

Weiter haben wir eine Linie L mit den Endpunkten U und V sowie einen Punkt P, zu dem wir den Punkt der Linie suchen, der den geringsten Abstand zu P hat.

Die Linie L kann als "parametrisierte Kurve" beschrieben werden:

L(t) = U + t*(V - U), wobei 0 <= t <= 1

Der Abstand zwischen P und irgend einem Punkt auf der Linie L lässt sich daher ebenfalls mittels Funktion ausdrücken:

D(t) = |P - L(t)| = |P - U - t*(V - U)|

Weil das nicht so klasse aussieht eine kleine Vereinfachung:

a := P - U und b := V - U, also: D(t) = |a - t*b|

Jetzt bleibt also nur noch das passende t zufinden, damit der Abstand D(t) möglicht klein wird - das liefert nämlich den Fußpunkt des Lots (Würde mich mal interessieren, ob das hier überhaupt jemand liest und auch noch hilfreich findet?). Ohne weitere Einzelheiten jetzt die Formel, mit der sich der Parameter t für die Bestimmung des Lotpunkts gewinnen lässt:

Code:

    <a,b>
t = -----
    <b,b>

Jetzt gibt's 3 Möglickeiten:

(1) 0 <= t <= 1, dann ist alles Prima und mit D(t) lässt sich der tatsächliche Abstand für den Vergleich bestimmen.

(2) t > 1, dann ist V der Punkt mit dem kleinsten Abstand zu P.

(3) t < 0, dann ist U der Punkt mit dem kleinsten Abstand zu P.

Achim Dabrunz

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

marvin101010
Mitglied
ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)


Sehen Sie sich das Profil von marvin101010 an!   Senden Sie eine Private Message an marvin101010  Schreiben Sie einen Gästebucheintrag für marvin101010

Beiträge: 562
Registriert: 22.01.2003

Pentium 4
Windows XP
Autocad 2002
Autocad 2002LT + Extender
ADT 3.3
ArchiCAD

erstellt am: 16. Sep. 2003 09:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

danke, danke...

hatte die geschichte gerade aus den augen verloren.
muss es heute nachmittag aber angehen...sag dann, wie ichs gemacht
habe 

------------------
.......good vibrations make the world go round 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 16. Sep. 2003 10:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für marvin101010 10 Unities + Antwort hilfreich

Hallo,

der Geometrierechner, stellt ja schon eine Funktion zur Verfügung, die genau diese Aufgabenstellung erfüllt.
Anbei ein paar Code-Zeilen, die dir die Anwendung zeigen. In der Hilfe gibts zu dem Gemetriezeugs, was in meinem Beitrag zuvor steht, sogar ein Bild. Da kannst du dir das Prinzip einmal anschauen, Ob allerdings der Geometrierchner in LT+Extender funzt - keine Ahnung?? Das kannst du ja mal posten, denn ich denke daraus resultiert die Anforderung auf (vl-irgendwas zu verzichten)

Code:

;Nächster Punkt An Parallelen LinieN
(defun c:npapln ( / l1d l1a l1e l2d l2a l2e pt ptp a1 a2)
  (arxload "geomcal")
  (setq l1d (entget (car(entsel)))
        l1a (cdr(assoc 10 l1d))
        l1e (cdr(assoc 11 l1d))
        l2d (entget (car (entsel)))
        l2a (cdr(assoc 10 l2d))
        l2e (cdr(assoc 11 l2d))
        pt (car(entsel))
        ptp (cdr(assoc 10 (entget pt)))
        a1 (cal "dpl(ptp,l1a,l1e)")
        a2 (cal "dpl(ptp,l2a,l2e)")
        )
  (if (< a1 a2)
    (progn
      (redraw (cdr(assoc -1 l1d)) 3)
      (redraw (cdr(assoc -1 l2d)) 2)
      )
    (progn
      (redraw (cdr(assoc -1 l1d)) 2)
      (redraw (cdr(assoc -1 l2d)) 3)
      )
    )
 
  )

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
10, 9, 8 - Der Countdown läuft. Wofür?... ./.
Ich bin vom 07.-10.10. in Stuttgart dabei.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz