eingeschlossenen Winkel aus 2 Geraden?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Matthias

Betreff: eingeschlossenen Winkel aus 2 Geraden?

BeitragSo, Jan 24, 2010 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay. Leider bin ich in Mathe nicht gerade besonders gut.
Mein Problem. Ich suche eine Formel die den eingeschlossenen Winkel aus 2 Geraden berechnen kann.

Ist bestimmt banal aber ich komme nicht drauf. Very Happy

Xeres

Moderator

BeitragSo, Jan 24, 2010 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Google ist dein Freund.
http://mathenexus.zum.de/html/...winkel.htm
1. Ergebnis "Schnittwinkel zweier geraden"
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Matthias

BeitragSo, Jan 24, 2010 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Formeln dafür habe ich bei Wiki auch schon gefunden, doch ich weiß ebend nicht wie mann das in Codeform bringt.

Aber drozdem erstmal danke für deine Hilfe.

Xeres

Moderator

BeitragSo, Jan 24, 2010 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Na dann: was für Infos hast du denn?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Matthias

BeitragSo, Jan 24, 2010 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Also Ich stelle mir die das so in der form vor.

EingeschlossenerWinkel=WinkelVonLinien(X1,Y1,X2,Y2,X3,Y3,X4,Y4)

http://de.wikipedia.org/wiki/S...ometrie%29

Xeres

Moderator

BeitragSo, Jan 24, 2010 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja gut, und welche dieser Variablen hast du?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Matthias

BeitragSo, Jan 24, 2010 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Start und Endpunkt von beiden Geraden.

Code: [AUSKLAPPEN]

X1=100 Y1=100
X2=150 Y2=150
X3=150 Y3=150
X4=100 Y4=200

BladeRunner

Moderator

BeitragSo, Jan 24, 2010 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Es steht zu vermuten dass er xundy1-4 hat Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Xeres

Moderator

BeitragSo, Jan 24, 2010 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Na um so besser. Dann berechnest du aus den Punkten die Steigung der Geraden:
http://mathenexus.zum.de/forme...hungen.htm
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Matthias

BeitragSo, Jan 24, 2010 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Xeres.

Danke das du nach diese Formel gesucht hast. Nach Formel kann ich auch noch selber suchen.
Es geht darum sie in Codeform zu bringen.

Xeres

Moderator

BeitragSo, Jan 24, 2010 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Und eben das stellt doch das geringste Problem da? Du hast die Variablen. Du hast die Formeln.
Was ist denn die Schwierigkeit an der Codeform?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Matthias

BeitragSo, Jan 24, 2010 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Very Happy

Das ist so als wenn ich dir Fragen würde was daran so schwierig ist Japanich zu verstehen.

Xeres

Moderator

BeitragSo, Jan 24, 2010 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, du brauchst für beide Geraden je eine Steigung...
BlitzBasic: [AUSKLAPPEN]
Local m1 = (y2 - y1) / (x2 - x1)

...wäre da zum Beispiel ein Anfang. Schau dir die Formel an und übersetze sie 1:1. Nichts ist einfacher.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

NightPhoenix

BeitragSo, Jan 24, 2010 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde es mit Vektoren machen, weil man die Formel dann ganz einfach auch auf den 3 dimensionalen Raum anwenden kann.
Hier für 2D:

user posted image Diese Formel einfach umgesetzt

BlitzBasic: [AUSKLAPPEN]
Function Vektor_Winkel_2#(g1ax#,g1ay#,g1ex#,g1ey#,g2ax#,g2ay#,g2ex#,g2ey#)
Local winkel#,zwischenschritt#


vek1_x# = g1ex#-g1ax#
vek1_y# = g1ey#-g1ay#

vek2_x# = g2ex#-g2ax#
vek2_y# = g2ey#-g2ay#


;formel... cos w# = (vek1 o vek2) / (|vek1| * |vek2|)


zwischenschritt# = (vek1_x#*vek2_x#+vek1_y#*vek2_y) / (Sqr(vek1_x#*vek1_x# + vek1_y#*vek1_y#) * Sqr(vek2_x#*vek2_x# + vek2_y#*vek2_y#))


winkel#=ACos(zwischenschritt#)

Return winkel#

End Function

Sollte funktionieren, hab ich nicht getestet.
.
  • Zuletzt bearbeitet von NightPhoenix am So, Jan 24, 2010 21:12, insgesamt 2-mal bearbeitet

Noobody

BeitragSo, Jan 24, 2010 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Da der Threadersteller von sich sagt, dass er nicht viel von Mathe versteht, würde ich ihn nicht grade mit Vektoren überrumpeln (vor allem, da er es kaum für den 3D-Raum benötigt) Wink

Wie Xeres schon demonstriert hat, ist es sehr einfach, die Steigung einer Geraden zu berechnen. Wenn du die einmal hast, nimmst du folgende Formel:
user posted image
Der rechte Teil der Gleichung sollte klar sein - M1 und M2 hast du ja, die beiden senkrechten Striche bedeuten einfach Abs.

Auf der linken Seite der Gleichung steht ein Tangens mit einem griechischen Symbol zwischen den Klammern; dieses Symbol entspricht deinem Winkel. Das heisst, du musst nun nur noch das Tangens irgendwie wegbekommen, damit dort nur noch der gesuchte Winkel steht. Das geht ganz einfach mit Arcustangens BlitzBasic: [AUSKLAPPEN]
Local Winkel# = ATan( Abs( ( M1 - M2 )/( 1 + M1*M2 ) ) )

Schon hast du deinen Winkel im Bereich von +90° bis -90°.

Da die Anwendung mathematischer Formeln in der Spieleprogrammierung relativ wichtig ist, würde ich dir empfehlen, dir das nochmal ein wenig anzuschauen. Wenn man die ganzen komischen Symbole ausblendet, sieht man sehr schnell, wie man Gleichungen nur ein wenig abändern muss, um sie gleich in den Code einbauen zu können.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Matthias

BeitragSo, Jan 24, 2010 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]


Function DrawPfad()
   Color 255,255,0
   For P=0 To MaxWayPoint-2
     X1=WayPointX(P) X2=WayPointX(P+1)
     Y1=WayPointY(P) Y2=WayPointY(P+1)
     X3=WayPointX(P+2)
     Y3=WayPointY(P+2)
     Color 255,255,0     
     Line X1,Y1,X2,Y2
     Winkel#=Vektor_Winkel_2(X1,Y1,X2,Y2,X2,Y2,X3,Y3)
     Text X1,Y1,Winkel
     Color 255,255,255
   Next
   
End Function


Functioniert leider nicht. Da Steht jetzt immer NaN.

Xeres

Moderator

BeitragSo, Jan 24, 2010 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du eine Fließkommazahl bekommen möchtest musst du auch mit ihnen Rechnen! Variablen sind dann x1# und die Funktion muss auch mit # enden!
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Noobody

BeitragSo, Jan 24, 2010 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Das liegt daran, dass die Funktion von NightPhoenix falsch ist Wink

Ändere folgende Zeile BlitzBasic: [AUSKLAPPEN]
zwischenschritt# = (vek1_x#*vek2_x#+vek1_y#*vek2_y) / (Sqr(vek1_x#*vek1_x# * vek1_y#*vek1_y#) * Sqr(vek2_x#*vek2_x# * vek2_y#*vek2_y#))

Ab in BlitzBasic: [AUSKLAPPEN]
zwischenschritt# = (vek1_x#*vek2_x#+vek1_y#*vek2_y) / (Sqr(vek1_x#*vek1_x# + vek1_y#*vek1_y#) * Sqr(vek2_x#*vek2_x# + vek2_y#*vek2_y#))
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Matthias

BeitragSo, Jan 24, 2010 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
@Noobody vielen Dank. Jetzt functioniert es super. Laughing

NightPhoenix

BeitragSo, Jan 24, 2010 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, da war's doch + und nicht * Smile
Danke für den aufmerksamen Blick Noo, ich änder das oben auch mal.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group