Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 249
  • Last Modified:

Extruding a 2D path

Hi guys,

I have developed a 2d graphics app which can create simple outlines (consisting of straight lines only).  Using DirextX, I would like to extrude each line into a face based on a height parameter.  Each Shape (2D) has an array of Point objects (X & Y values).  

Can anyone help?

I'm using C# but i'll accept the algorythm in pseudo code if you're not familiar with c# as long as it uses standard verticies / vertex buffers / index buffers etc.

Thanks in advance

Chris
0
chrisevans123
Asked:
chrisevans123
1 Solution
 
davebytesCommented:
If you aren't using too many lines to begin with, don't even bother worrying about optimization.

You may want to swap Y and Z in the following, depending on how you want things to look initially.

For each point, you want to make it a 3D point at say Z=100 to start with.  Then you also need the extruded matching point at Z=100+height.

A final vertex array can be rendered as a triangle strip if the points are interlaced.  That is, assuming your initial vertices are in a 2d float structure, and you have a 3d point structure (which D3D does), you want to do something like:

Point2D *array_orig; // already filled in.
int vertex_count; // already filled in...
float extrude_height; // same...

Point3D *array_3d = new Point3D[vertex_count];
int sub;
for (int i=0; i<vertex_count; i++)
{
  subi = 2*i;
  array_3d[subi].x = array_orig[i].x;
  array_3d[subi].y = array_orig[i].y;
  array_3d[subi].z = 100;
  array_3d[subi+1].x = array_orig[i].x;
  array_3d[subi+1].y = array_orig[i].y;
  array_3d[subi+1].z = 100 + extrude_height;
}

Then array_3d can be rendered as a triangle-strip.  You might need to play with clockwise vs counter-clockwise culling (or turn culling off).

-d
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now