Set-theoretic operations in HyperFun

Now, we will use HyperFun to construct objects using set-theoretic operations, which were introduced in the previous section. If you do not understand the meaning of a term (union, intersection, subtraction), please refer to the previous pages.

STEP 1: First, let’s try to display a cube 10 in length.

my_model(x[3], a[1])
{
  array box_vertex[3];

  box_vertex[1] = 0.0;
  box_vertex[2] = 0.0;
  box_vertex[3] = 0.0;

  box = hfBlock(x, box_vertex, 10.0, 10.0, 10.0);

  my_model = box;
}

Second, let’s try to polygonize and set the bounding box larger than the object in the form “-b 12” for example.

hfp set.hf -b 12

hyperfun.org_tut_html_e_images_set_op_step1.jpg

STEP 2: Please translate the center of the cube to the origin. When you finish, polygonize using the command in Step 1.

my_model(x[3], a[1])
{
  array box_vertex[3];

  box_vertex[1] = -5.0;
  box_vertex[2] = -5.0;
  box_vertex[3] = -5.0;

  box = hfBlock(x, box_vertex, 10.0, 10.0, 10.0);

  my_model = box;
}

hyperfun.org_tut_html_e_images_set_op_step2.jpg

STEP 3: Let’s try to make a sphere which has its center as the origin and a radius of 6.2. First, to display the sphere only, please type my_model = sphere

my_model(x[3], a[1])
{
  array box_vertex[3];
  array sphere_center[3];
  
  box_vertex[1] = -5.0;
  box_vertex[2] = -5.0;
  box_vertex[3] = -5.0;

  box = hfBlock(x, box_vertex, 10.0, 10.0, 10.0);

  sphere_center[1] = 0.0;
  sphere_center[2] = 0.0;
  sphere_center[3] = 0.0;

  sphere = hfSphere(x, sphere_center, 6.2);
  
  my_model = sphere;
}

hyperfun.org_tut_html_e_images_set_op_step3.jpg

STEP 4: We will get the union of a box and a sphere. In HyperFun, set-theoretic union operator is |.

my_model(x[3], a[1])
{
  array box_vertex[3];
  array sphere_center[3];
  
  box_vertex[1] = -5.0;
  box_vertex[2] = -5.0;
  box_vertex[3] = -5.0;

  box = hfBlock(x, box_vertex, 10.0, 10.0, 10.0);

  sphere_center[1] = 0.0;
  sphere_center[2] = 0.0;
  sphere_center[3] = 0.0;

  sphere = hfSphere(x, sphere_center, 6.2);
  
  my_model = box | sphere;
}

hyperfun.org_tut_html_e_images_set_op_step4.jpg

STEP 5: We will get the intersection of a box and a sphere. In HyperFun, set-theoretic intersection operator is &.

my_model(x[3], a[1])
{
  array box_vertex[3];
  array sphere_center[3];
  
  box_vertex[1] = -5.0;
  box_vertex[2] = -5.0;
  box_vertex[3] = -5.0;

  box = hfBlock(x, box_vertex, 10.0, 10.0, 10.0);

  sphere_center[1] = 0.0;
  sphere_center[2] = 0.0;
  sphere_center[3] = 0.0;

  sphere = hfSphere(x, sphere_center, 6.2);
  
  my_model = box & sphere;
}

hyperfun.org_tut_html_e_images_set_op_step5.jpg

STEP 6: We will subtract the sphere from the box. In HyperFun, set-theoretic subtraction operator is \.

my_model(x[3], a[1])
{
  array box_vertex[3];
  array sphere_center[3];
  
  box_vertex[1] = -5.0;
  box_vertex[2] = -5.0;
  box_vertex[3] = -5.0;

  box = hfBlock(x, box_vertex, 10.0, 10.0, 10.0);

  sphere_center[1] = 0.0;
  sphere_center[2] = 0.0;
  sphere_center[3] = 0.0;

  sphere = hfSphere(x, sphere_center, 6.2);
  
  my_model = box \ sphere;
}

hyperfun.org_tut_html_e_images_set_op_step6.jpg

STEP 7: Subtraction of the box from the sphere.

my_model(x[3], a[1])
{
  array box_vertex[3];
  array sphere_center[3];
  
  box_vertex[1] = -5.0;
  box_vertex[2] = -5.0;
  box_vertex[3] = -5.0;

  box = hfBlock(x, box_vertex, 10.0, 10.0, 10.0);

  sphere_center[1] = 0.0;
  sphere_center[2] = 0.0;
  sphere_center[3] = 0.0;

  sphere = hfSphere(x, sphere_center, 6.2);
  
  my_model = sphere \ box;
}

hyperfun.org_tut_html_e_images_set_op_step7.jpg

hyperfun/tut_sethf.txt · Last modified: 2008/12/11 10:20 by admin
This site contains HyperFun and other software that is free to use and modify under the provisions of the CGPL agreement unless otherwise stated.
Project hosted by the Digital Materialization Group
HyperFun CGPL HyperFun on SourceForge Creative Commons License Valid CSS Driven by DokuWiki