Hi Paul; Watch the video. It can tell you much of dot and cross product :)
http://video.google.com/videosearch?q=cross+product&oe=utf-8&rls=org.mozilla:en-US:official&client=firefox-a&um=1&ie=UTF-8&ei=LE4dSreZCpLt_AbS4OGxDQ&sa=X&oi=video_result_group&resnum=4&ct=title# Regards. 2009/5/27 Paul Griffiths <[email protected]> > > Kim C Bale wrote: > > I presume this line: > > > > n = (pos1 -pos0) ^ (pos2 - pos1); > > > > is a cross product of two vectors. i.e. the normal, also known as the > > vector perpendicular to the two vectors that define the plane. > > > > In which case you would want to use the glsl function cross(vec3,vec3) > > as on the reference sheet I sent previously. > > > > You should have a read about the geometry math being used here. Blindy > > copying code without understanding it is a good way to shoot yourself in > > the foot later on. > > > > > > Kim. > > > > > > -----Original Message----- > > From: > > [mailto:] On Behalf Of Paul > > Griffiths > > Sent: 27 May 2009 13:40 > > To: > > Subject: Re: vertex shader help: compare position against > > plane > > > > ok, i got the world position with: > > > > > > Code: > > mat4 ToWorldMatrix= osg_ViewMatrixInverse* gl_ModelViewMatrix; > > vec3 worldPos = ToWorldMatrix * gl_Vertex; > > > > > > > > > > now i need to check which side of the plane the worldPos is. > > I googled and found some code for this but its not for glsl, ive came up > > with this but i get errors. > > > > the code is: > > > > > > Code: > > vec3 n; > > float d; > > > > n = (pos1 -pos0) ^ (pos2 - pos1); > > d = -n * pos0; > > > > inside = 1.0; > > > > if (dot(n, gl_Position) + w) > > { > > inside = 0.0; > > } > > > > > > > > > > the errors i get are: > > > > > > Code: > > VERTEX glCompileShader "" FAILED > > VERTEX Shader "" infolog: > > 0(46) : error C1021: operands to "^" must be integral > > > > glLinkProgram "eroded" FAILED > > Program "eroded" infolog: > > Vertex info > > ----------- > > 0(46) : error C1021: operands to "^" must be integral > > > > Warning: detected OpenGL error 'invalid operation' after > > RenderBin::draw(,) > > > > > > > > > > so i tried > > > > > > Code: > > vec3 n; > > float w; > > > > int p0 = (pos1 -pos0); > > int p1 = (pos2 - pos1); > > n = p0 ^ p1; > > w = -n * pos0; > > inside = 1.0; > > > > if (dot(n, worldPos) + w) > > { > > inside = 0.0; > > } > > > > > > > > but it alway returns inside = 0.0; > > > > any ideas? > > > > ------------------ > > Read this topic online here: > > http://forum.openscenegraph.org/viewtopic.php?p=13031#13031 > > > > > > > > > > > > _______________________________________________ > > osg-users mailing list > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or > > g > > > ***************************************************************************************** > > To view the terms under which this email is distributed, please go to > http://www.hull.ac.uk/legal/email_disclaimer.html > > > ***************************************************************************************** > > _______________________________________________ > > osg-users mailing list > > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > ------------------ > > Post generated by Mail2Forum > > > Thanks kim. am new to this 3d math stuff. > > ------------------ > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=13051#13051 > > > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > -- Ümit Uzun
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

