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

Reply via email to