R3.Geometry.Sphere.ReflectPoint C# (CSharp) Method

ReflectPoint() public method

Reflect a point in us.
public ReflectPoint ( Vector3D p ) : Vector3D
p Vector3D
return Vector3D
        public Vector3D ReflectPoint( Vector3D p )
        {
            if( IsPlane )
            {
                //Debug.Assert( !Infinity.IsInfinite( p ) );
                Vector3D v = Euclidean3D.ProjectOntoPlane( this.Normal, this.Offset, p );
                v = p + (v - p)*2;
                return v;
            }
            else
            {
                if( p == Center )
                    return Infinity.InfinityVector;
                if( Infinity.IsInfinite( p ) )
                    return Center;

                Vector3D v = p - Center;
                double d = v.Abs();
                v.Normalize();
                return Center + v * ( Radius * Radius / d );
            }
        }

Usage Example

Exemplo n.º 1
0
        private static void Transform(Mesh mesh)
        {
            Sphere sphere = new Sphere();

            sphere.Radius = 0.1;
            for (int i = 0; i < mesh.Triangles.Count; i++)
            {
                mesh.Triangles[i] = new Mesh.Triangle(
                    sphere.ReflectPoint(mesh.Triangles[i].a),
                    sphere.ReflectPoint(mesh.Triangles[i].b),
                    sphere.ReflectPoint(mesh.Triangles[i].c));
            }
        }
All Usage Examples Of R3.Geometry.Sphere::ReflectPoint