Und heute kommt es dann wohl richtig dick. Tausend Informationen, aber
auf die richtige Lösung komm ich nicht. Mir fehlt das mathematische
Verständnis und da ich mich auch nur jetzt damit beschäftige, wird es
mir auch bald wieder fehlen, sofern ich's überhaupt erlange.
So oder so steh ich vor folgendem Problem, dass ich irgend wie lösen
will. Ich werd mich noch weiter damit beschäftigen, aber ich hoffe
dass ihr mir letzten Endes eine Lösung präsentiert. Ich bin halt doch zu
doof und wo ich Tage brauch, da ist es für dein ein oder anderen hier
ne Sache von Minuten bis max. Stunde. *schäm*
Code: Alles auswählen
Structure VectorStraight
X.d ; Startpunkt der Geraden
Z.d ; Startpunkt der Geraden
Angle.d ; Richtungswinkel der Geraden (in Bogenmaß)
Length.d ; Länge der Geraden
EndStructure
Structure VectorCurve
X.d ; Startpunkt des Kreisbogens
Z.d ; Startpunkt des Kreisbogens
Angle.d ; Richtungswinkel der Kreisbogens (in Bogenmaß)
Radius.d ; Der Radius des Kreisbogens (bzw. des gesamten Kreises)
CenterX.d ; Mittelpunkt des Kreisbogens (bzw. des gesamten Kreises)
CenterZ.d ; Mittelpunkt des Kreisbogens (bzw. des gesamten Kreises)
CenterAngle.d ; Mittelpunktswinkel des Kreisbogens (in Bogenmaß)
Length.d ; Länge des Kreisbogens
EndStructure
; [in] *Straight1.VectorStraight erste Gerade
; [in] *Straight2.VectorStraight zweite Gerade
; [out] Array Distance.d(1) die Entfernung zwischen Startpunkt und Schnittpunkt auf den beiden Geraden
; [out] return #True/#False Rückgabe gibt es überhaupt einen Schnittpunkt
Procedure.i StraightHitStraight(*Straight1.VectorStraight, *Straight2.VectorStraight, Array Distance.d(1))
;Mathematik ^_^
Distance(0) = ; Entfernung auf der ersten Geraden vom Startpunkt zum Schnittpunkt
Distance(1) = ; Entfernung auf der zweiten Geraden vom Startpunkt zum Schnittpunkt
ProcedureReturn #True
EndProcedure
; [in] *Straight.VectorStraight Gerade
; [in] *Curve.VectorCurve Bogen
; [out] Array Distance.d(1) die Entfernung zwischen Startpunkt und Schnittpunkt der Geraden & Bogen
; [out] return #True/#False Rückgabe gibt es überhaupt einen Schnittpunkt
Procedure.i StraightHitCurve(*Straight.VectorStraight, *Curve.VectorCurve, Array Distance.d(1))
;Mathematik ^_^
Distance(0) = ; Entfernung auf der Geraden vom Startpunkt zum (ersten) Schnittpunkt
Distance(1) = ; Entfernung auf dem Bogem vom Startpunkt zum (ersten) Schnittpunkt
ProcedureReturn #True
EndProcedure
; [in] *Curve1.VectorStraight erster Bogen
; [in] *Curve2.VectorCurve zweiter Bogen
; [out] Array Distance.d(1) die Entfernung zwischen Startpunkt und Schnittpunkt der beiden Bögen
; [out] return #True/#False Rückgabe gibt es überhaupt einen Schnittpunkt
Procedure.i CurveHitCurve(*Curv1.VectorStraight, *Curve2.VectorCurve, Array Distance.d(1))
;Mathematik ^_^
Distance(0) = ; Entfernung auf dem ersten Bogen vom Startpunkt zum (ersten) Schnittpunkt
Distance(1) = ; Entfernung auf dem zweiten Bogen vom Startpunkt zum (ersten) Schnittpunkt
ProcedureReturn #True
EndProcedure
; [in] *Straight.VectorStraight Gerade
; [in] *Curve.VectorCurve Bogen
; [out] Array Distance.d(1) die Entfernung zwischen Startpunkt und Schnittpunkt der Geraden & Bogen
; [out] return #True/#False Rückgabe gibt es überhaupt einen Schnittpunkt
Procedure.i StraightLastHitCurve(*Straight.VectorStraight, *Curve.VectorCurve, Array Distance.d(1))
;Mathematik ^_^
Distance(0) = ; Entfernung auf der Geraden vom Startpunkt zum letzten Schnittpunkt
Distance(1) = ; Entfernung auf dem Bogem vom Startpunkt zum letzten Schnittpunkt
ProcedureReturn #True
EndProcedure
; [in] *Curve1.VectorStraight erster Bogen
; [in] *Curve2.VectorCurve zweiter Bogen
; [out] Array Distance.d(1) die Entfernung zwischen Startpunkt und Schnittpunkt der beiden Bögen
; [out] return #True/#False Rückgabe gibt es überhaupt einen Schnittpunkt
Procedure.i CurveLastHitCurve(*Curv1.VectorStraight, *Curve2.VectorCurve, Array Distance.d(1))
;Mathematik ^_^
Distance(0) = ; Entfernung auf dem ersten Bogen vom Startpunkt zum letzten Schnittpunkt
Distance(1) = ; Entfernung auf dem zweiten Bogen vom Startpunkt zum letzten Schnittpunkt
ProcedureReturn #True
EndProcedure
dann doch noch mal in Sätze formulieren. Nicht dass es heißt, ich hätte
mir keine Mühe beim erstellen der Frage gegeben.
Gegeben sind Vektoren im 2D-Raum. X und Z deswegen, weil eigentlich
handelt es sich schon um 3D-Raum, doch brauch ich die 3. Dimension
hier nicht, da ich davon ausgehen kann, dass die zu testenden Vektoren
die selbe Höhe haben.
Es gibt zwei Typen von Vektoren: Geraden und Kreisbögen. Gegeben ist der
Startpunkt, die Länge und die Startrichtung als Winkel im Bogenmaß. Für
Kreisbögen ist natürlich auch der Radius definiert. Des weiteren sind zudem
bereits bestimmt die Koordinaten des Kreismittelpunktes und der
Mittelpunktswinkel des Kreisbogens. Das hab ich doch tatsächlich selber hin
bekommen ^_^
In der Tat interessieren mich nicht die genauen Koordinaten des Schnittpunktes,
sondern die Entfernung dieses Schnittpunktes vom jeweiligen Startpunkt aus.
Auch benötige ich eigentlich nur den ersten Schnittpunkt. Doch in Ausnahmefällen
ist der letzte Schnittpunkt ebenfalls nötig. Dafür bräuchte es dann auch noch mal
jeweils eine extra Prozedur.
Wer auch immer sich dem annimmt, schon mal tausend dank.
MFG PMV