I don't understand well what a "sinusoidal surface" is. If the surface is sort of a general goniometric function of 2 variables, you should use VRML 97 node type "IndexedFaceSet". You can create such surface by creating it as a Handle Graphics object and then use the MATLAB vrml() function to export it to VRML.
If the shape is rather like corrugated iron, you can use the VRML97 node type "Extrusion".
Both will be best achieved using a text editor (and once you have object created, adding other objects to teh scene using 3D World Editor).
Look at the VRML97 specification to see what fields of these nodes you need to define:
Have a look at the following demos, where arbitrary shapes are defined:
vrmemb demo had been also created this way.
When you control the ball on the surface, you will have to count for the offset between ball centre and current point of contact with an arbitrary shape.