- public void generateNurbVertexes(float radius_top, float radius_bot, string detail)
- {
- int resolution = 0;
- float dx, dy, dz;
- // Scale measures down.
- float radius_top_scaled = radius_top / this.scale_factor;
- float radius_bot_scaled = radius_bot / this.scale_factor;
- // Set nurb quality.
- if (detail == "high")
- resolution = 40;
- if (detail == "medium")
- resolution = 20;
- if (detail == "low")
- resolution = 10;
- controlPointsNurb1 = new double[resolution, 3, 3];
- // Generate vertexes for nurb1.
- for (int i = 0; i < resolution; i++)
- {
- dx = ((Math.Abs((float)((PartialFrontPlain1[0].X - RarePlain2_1[0].X) / resolution))) * i);
- dy = ((Math.Abs((float)((PartialFrontPlain1[0].Y - RarePlain2_1[0].Y) / resolution))) * i);
- dz = ((Math.Abs((float)((PartialFrontPlain1[0].Z - RarePlain2_1[0].Z) / resolution))) * i);
- controlPointsNurb1[i, 0, 0] = PartialFrontPlain1[0].X - dx;
- controlPointsNurb1[i, 0, 1] = PartialFrontPlain1[0].Y - dy;
- controlPointsNurb1[i, 0, 2] = PartialFrontPlain1[0].Z + dz;
- controlPointsNurb1[i, 1, 0] = PartialFrontPlain2[0].X - dx;
- controlPointsNurb1[i, 1, 1] = PartialFrontPlain2[0].Y - dy + radius_top_scaled;
- controlPointsNurb1[i, 1, 2] = PartialFrontPlain2[0].Z + dz;
- controlPointsNurb1[i, 2, 0] = PartialFrontPlain2[0].X - dx;
- controlPointsNurb1[i, 2, 1] = PartialFrontPlain2[0].Y - dy;
- controlPointsNurb1[i, 2, 2] = PartialFrontPlain2[0].Z + dz;
- }
- }
- public void drawNurbs()
- {
- GL.Color3(Color.Yellow);
- GL.Map2(MapTarget.Map2Vertex3, 0.0, 1.0, 3, 3, 0.0, 1.0, 19*9, 3, ref controlPointsNurb1[0, 0, 0]);
- GL.Enable(EnableCap.Map2Vertex3);
- //GL.Enable(EnableCap.AutoNormal);
- //GL.Enable(EnableCap.Normalize);
- GL.MapGrid2(40, 0.0, 1.0, 40, 0.0, 1.0);
- GL.EvalMesh2(MeshMode2.Fill, 0, 40, 0, 40);
- }