Programme für Graphikrechner TI-82

Geometrie

download als ZIP Import als Gruppe von Programmen --- zurück

Das Programm soll folgende Aufgaben erfüllen:

  1. Eingabe der notwendigen Koordinaten in einer möglichst komfortablen Weise
  2. Berechnung von:
  3. Ausgabe der Ergebnisse
  4. Beachten aller Fälle

Zur Vereinfachung und Verbesserung der Übersichtlichkeit wurden relativ viele "PROZEDUREN" verwendet, trotzdem ist das HAUPTPROGRAMM noch sehr lang.

Die nachstehende Programmbeschreibung dient der Dokumentation und ist die Version 1 vom 28. 8. 98. Das Programm wurde bereits getestet, trotzdem können Fehler vorhanden sein, die zur Verbesserung des Programms bitte auch mit weiteren Anregungen an F. Müller weitergeleitet werden können.

Zur Formatierung: Die Programmenamen stehen FETT dem Programmtext (Courier New) vor. Anmerkungen sind in Times New Roman zumeist im Anschluss an den Programmtext zu finden. Doppelpunkte am Zeilenanfang werden nicht mitgeschrieben, Doppelpunkte am Zeilenende sollen darauf hinweisen, dass hier nur zur Gliederung ein Zeilenumbruch durchgeführt wurde.

QEING3D

Prompt X: Prompt Y: Prompt Z


Zur Eingabe der Koordinaten im Raum vorgesehen und in den Programmen EINGPKT und EINGRIC eingesetzt.
Das den Programmnamen vorstehende verschiebt die Eingabeprogramme an das Ende der Programmliste, denn es hat keinen Zweck diese Programme ohne das Hauptprogramm GEOMETRIE zu verwenden.

QEINGPKT

Disp "EINGABE PKT. 3": prgmQEING3D


Eingabe der Koordinaten eines Punktes
Wird in den meisten Programmen verwendet, insbesondere den Programmen die zur Eingabe von Geraden (QEINGGER) und Ebenen (QEINGEBE) dienen. Analog zu dem Programm QEINGPKT wird mit QEINGRIC ein Richtungsvektor eingegeben. Ein Nullvektor kann kein Richtungsvektor sein, sollte er trotzdem eingegeben werden, so wird die Abarbeitung des Programms gestoppt und auf dem Display die Meldung "KEINE RICHTUNG ANGEGEBEN - STOP" ausgegeben.
Übergabe der Größen durch die Variablen X, Y und Z; Auswertung im aufrufenden Programm.

QEINGRIC

Disp "EINGABE RICHTUNG": prgmQEING3D: If X=0 and Y=0 and Z=0: Then: Disp "KEINE RICHTUNG", "ANGEGEBEN STOP": Stop: END

QEINGGER

6->dim L6
Menu("EINGABE GERADE", "PKT.-RICHTUNG", A, "ZWEIPUNKT", B)
Lbl A
prgmQEINGPKT: X->L6 (1): Y->L6 (2): Z->L6 (3):
prgmQEINGRIC: X->L6 (4): Y->L6 (5): Z->L6 (6)
Goto C: Lbl B
prgmQEINGPKT: X->L6 (1): Y->L6 (2): Z->L6 (3):
prgmQEINGPKT: 1 X-L6(1)->L6(4): Y-L6(2)->L6(5): Z-L6(3)->L6(6):
If L6(4)=0 and L6(5)=0 and L6(6)=0: Then: Disp "KEINE RICHTUNG": Stop: End:
Lbl C


Eingabe einer Gerade g: x = P + s r.
Die Koordinaten der Gerade werden zunächst in Liste 6 gespeichert. Dabei hat L6 genau 6 Elemente, wobei die ersten 3 Listenelemente die Koordinaten eines Punktes sind, durch den die Gerade verläuft und die folgenden 3 Elemente repräsentieren den Richtungsvektor. Dabei wird die Geradengleichung durch Punkt P und Richtung r gegeben. Es gilt: L6 (1) = Px; L6 (2) = Py; L6 (3) = Pz und L6 (3) = rx; L6 (5) = ry; L6 (6) = rz. Die Gerade wird also stets in der Form Punkt-Richtung abgespeichert, egal ob sie in der Punkt-Richtungs- oder Zweipunktform eingegeben wurde. Die Eingabe des Nullvektors anstelle des Richtungsvektors bewirkt den Abbruch des Programms.
1 Ermitteln der durch zwei Punkte gegebenen Richtung.

QEINGEBE

9->dim L6
Menu("EINGABE EBENE", "PKT. + 2 RICHTUNG", A, "DREIPUNKT", B)
Lbl A:
0->A: Lbl D
prgmQEINGPKT: X->L6(1): Y->L6(2): Z->L6(3):
For (I, 1, 2):
If A=1: Then: prgmQEINGPKT:
Else: prgmQEINGRIC:
End:
X->L6(1+3*I): Y->L6(2+3*I): Z->L6(3+3*I):
End:
Goto C
Lbl B
: 1->A: Goto D
Lbl C

If A: Then:
For (J, 1, 2): For (I, 1,3): L6(J*3+I)-L6(I)->L6(J*3+I): END: END:
END
1 L6(4)*L6(7)+L6(5)*L6(8)+L6(6)*L6(9)->A: (L6(4)2+L6(5)2+L6(6)2)*(L6(7)2+L6(8)2+L6(9)2)->B:
If abs(A2-B)<5E-7: Then: Disp "DIE RICHTUNGSVEK", "SIND PARALLEL","KEINE EBENE EIN-", "GEGEBEN - STOP": Stop: End
If (L6(4)=0 and L6(5)=0 and L6(6)=0) or (L6(7)=0 and L6(8)=0 and L6(9)=0): Then: Disp "FEHLER RICHT:-VE", "IST NULLVEKTOR": Stop: End


Eingabe einer Ebene
Ebene wird an aufrufendes Programm durch L6 übergeben. Die Bedeutung der 9 Listenelemente ist ähnlich der Geraden wieder Punkt-Richtung-Richtung.
Es wird überprüft, ob die Richtungsvektoren parallel sind, oder einer der Richtungsvektoren der Nullvektor ist. Sollte dieser Fall eintreten wird die Abarbeitung gestopt.

QVECPROD

If dim L69:

Then:

Disp "VEKTORPRODUKT", "KANN NICHT BERE-", "CHNET WERDEN L6": Stop:

Else

L6(5)*L6(9)-L6(6)*L6(8)->L6(1): L6(6)*L6(7)-L6(4)*L6(9)->L6(2): L6(4)*L6(8)-L6(5)*L6(7)->L6(3):

End


Berechnung des Vektorproduktes
Zur Eingabe der beiden Richtungsvektoren durch das aufrufende Programm wird Liste 6 verwendet. Es wird vorausgesetzt, dass sie die Positionen 4 bis 9 belegen, wie es bei Ebenen vorliegen würde. Das Ergebnis wird auf die Positionen 1 - 3 gelegt. Damit ergibt sich durch Kürzen der Liste auf nur noch 3 Elemente der Kreuzvektor.

GEOMETRI

ClrHome: 3->dim L1: 3->dim L2: 3->dim L3: 3->dim L4: 3->dim L5: 3->dim L6: {3,3}->dim [A]: {3,1}->dim [B]

Menu ("ANALYT. GEOMETRIE", "ABSTAENDE", A, "SCHNITTWINKEL", G)

Lbl A

Menu ("ABSTAENDE","PKT.-GERADE", B, "PKT.-EBENE", C, "GERADE-GERADE", D, "GERADE-EBENE"; E)

Lbl B 2

Disp "ABSTAND PUNKT-", "GERADE"

prgmQEINGPKT: X->L1(1): Y->L1(2): Z->L1(3)

prgmQEINGGER: For (I, 1, 3): L6(I+3)->L3(I): END: L6->L2: 3->dim L2

sum(L3*(L1-L2)/sum(L3²))->S

L2+S*L3->L4

sum((L4-L1)²)->A

ClrHome: Disp "ABST.² P-G", A, "ABST. P-G", A, "LOTFUSSPUNKT", L4

Goto F: Lbl C 3

ClrHome: Disp "ABSTAND PUNKT-", "EBENE"

prgmQEINGPKT: X->L1(1): Y->L1(2): Z->L1(3)

prgmQEINGEBE: L6->L2: prgmQVECPROD: L6->L5: 3->dim L5: L5/(sum(L5²))->L5

For(I,1,3): L2(I)-L1(I)->[B](I,1): -L1(I+3)->[A](I,1): L2(I+3)->[A](I,2): L2(I+6)->[A](I,3): End

[A]-1[B]->[B]: 3->dim L1: L1+[B](1,1)*L5->L3

Disp "ABST PKT-EBENE", abs(T), "LOTFUSSPKT. L3", L3

Goto C: Lbl D5

ClrHome: Disp "ABSTAND GERADE-", "GERADE"

prgmQEINGGER: L6->L4: prgmQEINGGER: L6->L5: L4-L5->L1: 3->dim L1: For(I,1,3): L4(I+3)->L2(I): L5(I+3)->L3(I): End

sum (L2*L3)->X: X2-sum(L22)*sum(L32)->Z: Z=0->P

If P:

Then: (Sum(L1*L3))2-sum(L12)*sum(L32)=0->G: If G: Then: Disp "IDENTISCH": Else: L5->L6: 3->dim L6: sum(L1L3)/sum(L32)->S: L4->L1: 3->dim L1: L6+S*L3->L6: sum((L1-L6)2)->A: Disp "PARALLEL ABST.2", A, "Abstand ", A: End:

Else: For(I,1,3): L4(I+3)->L6(I+6):End:

prgmQVECTPROD: 3->L6: L6/sum(L62)->L6

For(I,1,3): L1(I)->[B](I,1): -L2(I)->[A](I,1): L3(I)->[A](I,2): L3(I)->[A](I,3): End

If det [A]=0:

Then: Disp "FEHLER - STOP": Stop:

Else: [A]-1[B]->[B]: For(I,1,3): L4(I)+[B](1,1)*L4(I+3)->L2(I): L5(I)+[B](2,1)*L5(I+3)->L3(I): End

If [B](3,1)=0:

Then: Disp "GEM. SCHNITTPKT-", L2:

Else: Disp "FUSSPKTE. L2, L3", L2, L3, "ABST.", abs([B](3,1)): End:

End:

End

Goto F: Lbl E 6

Disp "ABSTAND GERADE -","EBENE": prgmQEINGGER: L6->L1: prgmQEINGEBE: L6->L2:

For(I,1,3): L1(I)-L2(I)->L3(I): L3(I)->[B](I,1): -L1(I+3)->[A](I,1): L2(I+3)->[A](I,2): L2(I+6)->[A](I,3): End

If det [A]=0:

Then: prgmQVECTPROD: L6->L4: 3->dim L4: L4/sum(L42)->L4: For(I,1,3): -L4(I)->[A](I,1): End: [A]-1[B]->[C]: Disp "ABST.", abs ([C](1,1)):

Else: [A]-1[B]->[C]: For(I,1,3): L1(I)+[C](1,1)*L1(I+3)->L4(I): End: Disp GEM. SCHNITTPKT.", L4: End

Goto F: Lbl G 7

Menu("SCHNITTWINKEL","ZWEIER EBENEN", H, "GERADE - EBENE", I, "ZWEIER RICHTUNGEN", J)

Lbl H 8

prgmQEINGEBE: L6->L1: prgmQEINGEBE: L6->L2: prgmQVECPROD: L6->L4: 3->dim L4: L1->L6: prgmQVECPROD: L6->L3: 3->dim L3: Radian: cos-1 (sum(L2*L3)/sum(L22)/sum(L32))->W: -W->W

Disp "EINGESCHLOSSENER", "WINKEL W", W, "IN RAD (UMGESTEL"

Goto F: Lbl I9

prgmQEINGGER: L6->L1: For(I,1,3): L1(I+3)->L3(I): End: prgmQEINGEBE: L6->L2: prgmQVECPROD: L6->L4: 3->dim L4: Radian: Disp "WINKELBERECHNUNG", "WURDE AUF RADIANT", "UMGESTELLT": cos-1(sum(L3*L4)/sum(L32)/sum(L42))->W: W-/2->W: Disp "WINKEL W", W, "IN RAD (UMGESTEL"

Goto F: Lbl J 10

prgmQEINGRIC: X->L1 (1): Y->L1 (2): Z->L1 (3): prgmQEINGRIC: X->L2 (1): Y->L2 (2): Z->L2 (3): cos-1 (sum(L1*L2)/sum(L12)/sum(L22))->W: Disp "EINGESCHLOSSENER", "WINKEL W", W

Lbl F {Ende PrgmGeometri}


Verwendung der Label:

A - Hauptmenü "Abstände"
B - Unterprogramm "Abstand Punkt-Gerade"
C - Unterprogramm "Abstand Punkt-Ebene"
D - Unterprogramm "Abstand Gerade-Gerade"
E - Unterprogramm "Abstand Gerade-Ebene"
F - Ende des Hauptprogramms
G - Hauptmenü "Winkel"
H - Unterprogramm "Schnittwinkel Ebene-Ebene"
I - Unterprogramm "Schnittwinkel Gerade-Ebene"
J - Unterprogramm "Schnittwinkel Richtung-Richtung"


2 Unterprogramm "Abstand Punkt-Gerade"
Eingabe Punkt L1 und Gerade (Punkt L2 und Richtung L3); Gesucht Lotfußpunkt L4 (siehe Abbildung 1); Lösungsweg: Gleichungssystem aus (I): und (II): ergibt (III): und (IV): , es folgt L4 aus (II) und A = |L1L4|. zurück


3 Unterprogramm "Abstand Punkt-Ebene"
Eingabe Punkt L1 und Ebene L2. Gesucht Abstand und Lotfußpunkt; Lösungsweg: Berechnung des Vektorproduktes L5 der Ebene L6 = L2, Normierung des Vektors L5 und Aufsuchen des Lotfußpunktes L3 durch Lösung des Gleichungssystems. zurück


5 Unterprogramm "Abstand Gerade-Gerade"
Eingabe zweier Geraden g1 = L4 und g2 = L5 in der Form und ; Überprüfung der Lagebeziehung der beiden Geraden (Parallelität, gemeinsamer Schnittpunkt) und Ausgabe (Berechnung) des Abstandes;

Lösungsweg für windschiefe Geraden:
Unterscheidung der Fälle:
Geraden sind identisch ( und )
Geraden sind parallel ()
Vorgehen wie bei der Berechnung des Abstandes Punkt - Gerade
Geraden sind windschief
Bestimmung des zu den Richtungsvektoren der Geraden senkrechten Vektors durch Berechnung des Kreuzproduktes und nachfolgendes Lösen des entstehenden Gleichungssystems. Damit erfolgt die Angabe der Lotfußpunkte und des Abstandes.
Verwendung der Variablen: , , , P ist Wahrheitswert für die Parallelität der Geraden, und G für die Existenz eines gemeinsamen Schnittpunktes.
Der explizite Lösungsweg scheint wenig praktikabel:

aus (I) , (II) und (III) folgt

(I') und (II') , durch Lösung des Gleichungssystems folgt

(IV) und (V) . zurück


6 Unterprogramm "Abstand Gerade-Ebene"
Eingabe der Gerade L1 und der Ebene L2 und Lösung des Gleichungssystems, vorheriges Überprüfen der Lösbarkeit des Gleichungssystems (ist das lineare GS nicht lösbar, so schneidet die Gerade die Ebene nicht und es wird nun der Abstand Punkt - Ebene bestimmt anderenfalls Ermittlung des gemeinsamen Schnittpunktes). zurück


7 Die Berechnung der Winkel erfolgt zumeist durch Anwenden des arccos und weiterer Addition oder Subtraktion von 180° oder pi. Da nicht die Rechnung in Grad oder Radiant vorausgesetzt werden kann, stellt das Programm automatisch auf Radian um. Das ist unbedingt für die weitere Arbeit zu beachten. zurück


8 Unterprogramm "Schnittwinkel Ebene-Ebene"
Lösungsweg: Durch bestimmen der Normalen erhält man Sehnenvierecke, in denen eine Diagonale der Durchmesser des Kreises ist. Der gesuchte Winkel ist also die Ergänzung des Normalenschnittwinkel zu . zurück


9 Unterprogramm "Schnittwinkel Gerade-Ebene"
Lösungsweg: Berechnung der Normalen; der gesuchte Winkel ergibt sich als Ergänzung des berechneten Winkels zu pi/2. zurück


10 Unterprogramm "Schnittwinkel Richtung-Richtung" zurück


zurück - Seitenanfang - home

Finden Sie Fehler oder haben Sie Fragen?mathe@org.dz.shuttle.de