using System.Windows.Forms;
using System.Drawing;
using Drawing3d;
namespace Sample
{
public partial class Form1 : Form
{
MyDevice Device = new MyDevice();
public Form1()
{
InitializeComponent();
Device.WinControl = this;
}
}
public class MyDevice:OpenGlDevice
{
CustomSurface MySurface = new CustomSurface();
public override void OnPaint()
{
base.OnPaint();
PolygonMode = PolygonMode.Line;
MySurface.Paint(this);
}
protected override void OnCreated()
{
base.OnCreated();
BackColor = Color.White;
MySurface.OnGetValue += MySurface_OnGetValue;
MySurface.OnGetUDerivation += MySurface_OnGetUDerivation;
MySurface.OnGetVDerivation += MySurface_OnGetVDerivation;
MySurface.CompileEnable = false;
}
private xyz MySurface_OnGetVDerivation(object sender, double u, double v)
{
u = (u - 0.5) * 5; // map 0,1 --> -2.5,2.5
v = (v - 0.5) * 5; // map 0,1 --> -2.5,2.5
return new xyz(0, 1, v);
}
private xyz MySurface_OnGetUDerivation(object sender, double u, double v)
{
u = (u - 0.5) * 5; // map 0,1 --> -2.5,2.5
v = (v - 0.5) * 5; // map 0,1 --> -2.5,2.5
return new xyz(1, 0, u);
}
private xyz MySurface_OnGetValue(object sender, double u, double v)
{
u = (u - 0.5) * 5; // map 0,1 --> -2.5,2.5
v = (v - 0.5) * 5; // map 0,1 --> -2.5,2.5
return new xyz(u, v, (u * u + v * v) / 2);
}
}
}