vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.5  | Shop Copyright ©2000-2008
 
zurück
Knüller: vb@rchiv CD Vol.4
Knüller: vb@rchiv Offline-Reader - Die Offline-Wissensdatenbank

vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4
 
Tools & Components Anzeigen 
 
Unser Tipp: Alle Online-Forenbeiträge aus dem vb@rchiv - gesammelt in einer Offline-Wissendatenbank, mit Internet-Update-Funktion, u.v.m.

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Rund um DirectX
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kann...(Raycasting) 
Autor: Weltraumputze
Datum: 22.02.08 12:35

Hallo nochma,

jetzt merk ich erst das du es unter Umständen nicht wissen kannst. Also noch ein mini-tut über Vektoren

Du meintest diese Gleichung g= p1 + s*(p2-p1) (meintest du doch, oder?)

Das ist abgewandelte Normalform aus der Vektorrechnung um eine Gerade zu definieren. Nur ich kann hier keine dreizeiligen Klammern schreiben. Es gibt übrigens nur p1 und p2, das sind die beiden Punkte die du zurückbekommst wenn du die Mauskoordinaten umwandelst. Eigentlich funktioniert das so: man definiert einen Punkt von der Geraden im Raum (als Startpunkt, definiert durch seinen Ortsvektor, in der Gleichung wäre das einfach p1) und man nimmt den Richtungsvektor (ergibt sich aus p2-p1) und "hängt" ihn an den ersten punkt. Damit wäre die Gerade definiert, aber man muss ja auch auf JEDEN einzelnen Punkt zurückgreifen können. Dafür ist die Variable s da. Wenn man einen Vektor mit einer einzelnen Zahl multipliziert verlängert/verkürzt sich dieser, aber er hat immernoch die selbe Richtung. Sozusagen ist jeder Punkt auf der Geraden ein Vielfaches des Richtungsvektors vom Startpunkt aus

zum zweiten:

ist schon richtig wie du dir das denkst. Es ist ganz simpel zu benutzen:
Function AbstandPG(p1, p2, p3, g1, g2, g3, a1, a2, a3) As Double
 Dim r, d1, d2, d3, d
 r = (a1 * (p1 - g1) + a2 * (p2 - g2) + a3 * (p3 - g3)) / (a1 * a1 + a2 * a2 + _
   a3 * a3)
 d1 = g1 + r * a1 - p1
 d2 = g2 + r * a2 - p2
 d3 = g3 + r * a3 - p3
 d = Sqr(d1 * d1 + d2 * d2 + d3 * d3)
 AbstandPG = CDbl(d)
End Function
 
'Und jetzt die Benutzung
dim l as double
dim k as D3DVECTOR 'Kugelmittelpunk
dim p as D3DVECTOR '1. Punkt der Gerade
dim r as D3DVECTOR 'Richtungsvektor
l = AbstandPG(k.x, k.y, k.z, p.x, p.y, p.z, r.x, r.y, r.z)
yo, ich hoffe das hat mal wieder geholfen^^

MFG die Weltraumputze

..oO°*Kondome schützen nicht vor Geschlechtsverkehr*°Oo..
Alles was man zur DirectX8 Programmierung braucht
Visual Basic auf USB-Stick

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Tutorial: Picking in DirectX oder wie man 3D klicken kann......1.082Weltraumputze07.02.08 16:14
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...327Weltraumputze08.02.08 13:53
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...287VBWolfi20.02.08 11:12
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...280Weltraumputze21.02.08 08:26
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...237VBWolfi22.02.08 09:30
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...243Weltraumputze22.02.08 12:35
Re: Tutorial: Picking in DirectX oder wie man 3D klicken kan...280VBWolfi25.02.08 11:13

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2008 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.

Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel