2d Punkt in Dreieck
Übersicht

![]() |
StepTigerBetreff: 2d Punkt in Dreieck |
![]() Antworten mit Zitat ![]() |
---|---|---|
Joa, mal wieder so ne dumme Dreiecksfrage ^^
Mit einem Unterschied: Ich hab vorarbeit geleistet ^^ gegeben: Dreieck mit 3 Vektoren. Vektor t, die Zielkoordinate Dreieck: Vektor p = Vektor des ersten Dreieckpunktes Vektor a = Vektor von p zum Punkt B Vektor b = Vektor von p zum Punkt C Dann fang ich mit einem parallelogramm an: t\x = p\x + k * a\x + l * b\x t\y = p\y + k * a\y + l * b\y Sind sowohl k als auch l unter gleich 1, so ist der Punkt im Parallelogramm. Nun gezweitelt: ist die Summe aus k und l unter gleich 1, so ist der Punkt im Dreieck. Nur: Wie bekomme ich eine allgemeingültige Formel: k= l= ? Danke! |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist doch einfachste Algebra.
t\x = p\x + k * a\x + l * b\x <=> k = (t\x - l * b\x - p\x) / a\x <=> l = (t\x - k * a\x - p\x) / b\x t\y = p\y + k * a\y + l * b\y <=> k = (t\y - p\y - l * b\y) / a\y <=> l = (t\y - p\y - k * a\y) / b\y So, das müste so passen. Zumindest wenn man die Formeln einfach umstellt. |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du jetzt noch schaffst, eine Formel mit nur einer Unbekannten zu machen, die dann auch nur auf einer Seite steht, dann stehe ich zu tiefst in deiner Schuld | ||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie meinst du das jetzt?
Welche unbekannte? Ich blick auch nicht ganz durch, was du genau willst. |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Unbekannten k und l
Hab heute meine Mathestunde sinnvoll genutzt, der Lehrerin nicht zugehört und ne Menge vorarbeit geleistet. Dabei kam ich auf folgende Ergebnisse: k=(l*bx+tx-vx)/ax hab mal alles in meinen Ti 92 eingetippt, der mir darauf folgende Formel ausgab. l=(ax*by*(ty-vy)+tx-vx)/(ax*ay*by-bx) t=target v=dreiecksvektor 1 a=vektor von v zu punkt 2 b=vektor von v zu punkt 3 hällt sich das ergebnis l+k nun unter gleich 1 und ist über gleich 0, so ist der Vektor t im Dreieck ![]() Ich schreib heute noch ein Programm dafür ![]() |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry für Doppelpost aber ist mal wirklich wichtig ![]() also siehe hier: Code: [AUSKLAPPEN] Graphics 800,600,32,2
Dim pos(3,2) num=0 SetBuffer BackBuffer() While Not KeyDown(1) tx=MouseX() ty=MouseY() If KeyDown(2) Then num=0 If KeyDown(3) Then num=1 If KeyDown(4) Then num=2 If MouseDown(1) And MilliSecs()>lt pos(num,0)=MouseX() pos(num,1)=MouseY() num=(num+1) Mod 3 lt=MilliSecs()+100 EndIf px=pos(0,0) py=pos(0,1) ax=pos(1,0)-pos(0,0) ay=pos(1,1)-pos(0,0) bx=pos(2,0)-pos(0,0) by=pos(2,1)-pos(0,0) l#=-1 k#=-1 dot2=0 If ax<>0 And ay<>0 And bx<>0 And by<>0 k1#=(bx*(py-ty)-by*(px-tx)) l1#=(-(ax*(py-ty)-ay*(px-tx))) div#=(ax*by-ay*bx) k#=k1#/div# l#=l1#/div# dot2=1 EndIf tl#=l# tk#=k# ts#=-(k#+l#) dot=0 If ts#>=0 And ts#<=1 And k#<0 And l#<0 Then dot=1 Line pos(0,0),pos(0,1),pos(1,0),pos(1,1) Line pos(0,0),pos(0,1),pos(2,0),pos(2,1) Line pos(1,0),pos(1,1),pos(2,0),pos(2,1) LockBuffer For x=0 To GraphicsWidth()-1 Step 1 For y=0 To GraphicsHeight()-1 Step 1 If ax<>0 And ay<>0 And bx<>0 And by<>0 tx=x ty=y k1#=(bx*(py-ty)-by*(px-tx)) l1#=(-(ax*(py-ty)-ay*(px-tx))) div#=(ax*by-ay*bx) k#=k1#/div# l#=l1#/div# s#=-(k#+l#) If s>=0 And s<=1 And k#<0 And l#<0 Then WritePixelFast x,y,255 Shl 16 + 255 Shl 8 + 255 EndIf Next Next UnlockBuffer Color 255,0,0 Text 1,1,dot Text 1,15,dot2 Text 1,30,tk# Text 1,45,tl# Text 1,60,ts# Flip Cls Wend End Der Code zeichnet ein komplett falsches Dreieck obwohl die Formel richtig ist. Kann also nur mein Fehler sein. Die Formel IST richtig. Bin sie mit zich tausenden an Koordinaten im Koordinatensystem durchgegangen. hier mal die jetzige Formel, denn meine vorherige war nicht ganz richtig ^^ Code: [AUSKLAPPEN] k1#=(bx*(py-ty)-by*(px-tx))
l1#=(-(ax*(py-ty)-ay*(px-tx))) div#=(ax*by-ay*bx) k#=k1#/div# l#=l1#/div# |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group