[Paraview] Creating Spatial Positions For Optimum Results In Paraview

2018-04-09 Thread GILLILAND G. (929919)
Hi there,

I've had some great advice on here previously, however it isn't supplying the 
correct results.

I've spoken to my lecturer and have done some digging myself, and the reason i 
believe that the code (attached below) isn't providing a decent output to use 
in Paraview is that it's missing spatial positioning. I know the equations to 
do so, but i'm absolutely stuck on where to include them in the code: to find 
the position of x is: i * dx / xMax. where i is the index of the current data 
sample and xMax is 10. dx is the unit position between the data samples, so to 
find this it will be number of data samples along x / xMax.V The same applies 
for y. But just to reiterate, i have not the slightest idea on where or how to 
implement this in my current set up.

Secondly, when using the output provided by the code, if to loo, it looks as if 
all of the z slices are on top of one another. (To note, when compiling the 
code in commandline, i use 64 64 64 1). Correct me if i'm wrong, but I believe 
that the spatial positioning will rectify, or it could be the row id that 
Paraview generates. (Side note, i'm using dot to points to just to get an idea 
of the datas layout)

Thanks so much for the help in advance

#include
#include
#include
#include

void gen_sally( int xs, int ys, int zs, int time, float *sally )
/*
 *  Gen_Sally creates a vector field of dimension [xs,ys,zs,3] from
 *  a proceedural function. By passing in different time arguements,
 *  a slightly different and rotating field is created.
 *
 *  The magnitude of the vector field is highest at some funnel shape
 *  and values range from 0.0 to around 0.4 (I think).
 *
 *  I just wrote these comments, 8 years after I wrote the function.
 *
 *  Developed by Sally of Sally University
 *
 */
{
  float x, y, z;
  int ix, iy, iz;
  float r, xc, yc, scale, temp, z0;
  float r2 = 8;
  float SMALL = 0.001;
  float xdelta = 1.0 / (xs-1.0);
  float ydelta = 1.0 / (ys-1.0);
  float zdelta = 1.0 / (zs-1.0);

  for( iz = 0; iz < zs; iz++ )
  {
z = iz * zdelta;// map z to 0->1
xc = 0.5 + 0.1*sin(0.04*time+10.0*z);   // For each z-slice, determine the 
spiral circle.
yc = 0.5 + 0.1*cos(0.03*time+3.0*z);//(xc,yc) determine the center 
of the circle.
r = 0.1 + 0.4 * z*z + 0.1 * z * sin(8.0*z); //  The radius also changes at 
each z-slice.
r2 = 0.2 + 0.1*z;   //r is the center radius, 
r2 is for damping
for( iy = 0; iy < ys; iy++ )
{
y = iy * ydelta;
for( ix = 0; ix < xs; ix++ )
{
x = ix * xdelta;
temp = sqrt( (y-yc)*(y-yc) + (x-xc)*(x-xc) );
scale = fabs( r - temp );
/*
 *  I do not like this next line. It produces a discontinuity
 *  in the magnitude. Fix it later.
 *
 */
   if ( scale > r2 )
  scale = 0.8 - scale;
   else
  scale = 1.0;
z0 = 0.1 * (0.1 - temp*z );
   if ( z0 < 0.0 )  z0 = 0.0;
   temp = sqrt( temp*temp + z0*z0 );
scale = (r + r2 - temp) * scale / (temp + SMALL);
scale = scale / (1+z);
   *sally++ = scale * (y-yc) + 0.1*(x-xc);
   *sally++ = scale * -(x-xc) + 0.1*(y-yc);
   *sally++ = scale * z0;
}
}
  }
}


void create_csv(char* filename, float *sally, int size) {
printf("1\n Creating %s.csv file\n", filename);

FILE *fp;

fp = fopen(filename, "w");

fprintf(fp, "X,Y,Z\n");
int i;

for (i = 0; i < size; i++) {
fprintf(fp, "%f%c", sally[i], (i % 3) ? ',' : '\n');
}

fclose(fp);
printf("\n %sfile created", filename);
}




int main(int argc, char *argv[]){

printf("1\n");
//read from args
int xs;
int ys;
int zs;
int time;
sscanf(argv[1],"%d",);
sscanf(argv[2],"%d",);
sscanf(argv[3],"%d",);
sscanf(argv[4],"%d",);


int arraySize = xs*ys*zs*3;

//allocate memeory for array. This is done so that stack memory doesn't run 
out.'
float* sally;
sally = (float*)malloc((arraySize) * sizeof(*sally));

//runs the code. One of the args is a pointer so no return type is needed.
gen_sally(xs,ys,zs,time,sally);

//create varibles for file generation
char filename[20] = "results.csv";
create_csv(filename, sally, arraySize);

free(sally);
return 0;
}
___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Search the list archives at: http://markmail.org/search/?q=ParaView

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/paraview


[Paraview] Visible Human Project in Paraview

2018-04-05 Thread GILLILAND G. (929919)
Hey guys,

I'm new to Paraview, actually, new to visualising volumetric data.

I've just downloaded some .raw files from the visible human project website for 
an assignment and have them grouped/ready to go in Paraview. However, when i 
try and load the data  for volume representation nothing happens, or when i try 
to represent it with a slice, it says incorrect dimensionality.

Is there anything else i'm missing? I've followed the steps on the wiki and 
still, nothing happens.

Cheers

___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Search the list archives at: http://markmail.org/search/?q=ParaView

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/paraview


[Paraview] CSV Files and Volumetric Data

2018-04-04 Thread GILLILAND G. (929919)
Hi there,

I have assignment where data is produced in C, and i have to export it to a 
relevant file format that works with a visualisation software of my choice.

I've chosen Paraview, because i know that CSV files work with this software.

Rather than table to points, i want to be able to convert the points to a 
volumetric dataset... So i can have greater control over colour mapping. But i 
was told that the code that generates the dataset is missing some data, or i 
may have missed something in the way i export the file.

I've included the code below; i would love some help with this. I'm only decent 
with coding in Java and my lecturer has really given the class a lot of support.

Cheers

#include
#include
#include
#include

void gen_sally( int xs, int ys, int zs, int time, float *sally )
/*
 *  Gen_Sally creates a vector field of dimension [xs,ys,zs,3] from
 *  a proceedural function. By passing in different time arguements,
 *  a slightly different and rotating field is created.
 *
 *  The magnitude of the vector field is highest at some funnel shape
 *  and values range from 0.0 to around 0.4 (I think).
 *
 *  I just wrote these comments, 8 years after I wrote the function.
 *
 *  Developed by Sally of Sally University
 *
 */
{
  float x, y, z;
  int ix, iy, iz;
  float r, xc, yc, scale, temp, z0;
  float r2 = 8;
  float SMALL = 0.001;
  float xdelta = 1.0 / (xs-1.0);
  float ydelta = 1.0 / (ys-1.0);
  float zdelta = 1.0 / (zs-1.0);

  for( iz = 0; iz < zs; iz++ )
  {
z = iz * zdelta;// map z to 0->1
xc = 0.5 + 0.1*sin(0.04*time+10.0*z);   // For each z-slice, determine the 
spiral circle.
yc = 0.5 + 0.1*cos(0.03*time+3.0*z);//(xc,yc) determine the center of 
the circle.
r = 0.1 + 0.4 * z*z + 0.1 * z * sin(8.0*z); //  The radius also changes at each 
z-slice.
r2 = 0.2 + 0.1*z;   //r is the center radius, r2 is 
for damping
for( iy = 0; iy < ys; iy++ )
{
y = iy * ydelta;
for( ix = 0; ix < xs; ix++ )
{
x = ix * xdelta;
temp = sqrt( (y-yc)*(y-yc) + (x-xc)*(x-xc) );
scale = fabs( r - temp );
/*
 *  I do not like this next line. It produces a discontinuity
 *  in the magnitude. Fix it later.
 *
 */
   if ( scale > r2 )
  scale = 0.8 - scale;
   else
  scale = 1.0;
z0 = 0.1 * (0.1 - temp*z );
   if ( z0 < 0.0 )  z0 = 0.0;
   temp = sqrt( temp*temp + z0*z0 );
scale = (r + r2 - temp) * scale / (temp + SMALL);
scale = scale / (1+z);
   *sally++ = scale * (y-yc) + 0.1*(x-xc);
   *sally++ = scale * -(x-xc) + 0.1*(y-yc);
   *sally++ = scale * z0;
}
}
  }
}


void create_csv(char* filename,float *sally, int size){
printf("1");
printf("\n Creating %s.csv file",filename);
FILE *fp;
fp=fopen(filename,"w");
fprintf(fp,"X,Y,Z\n");
int i;
int counter = 0;
for(i = 0; i< size; i++){
if(sally[i] == 0){
fprintf(fp,"0");
}
else{
fprintf(fp,"%f",sally[i]);
}
counter++;
if(counter == 3){
fprintf(fp, "\n");
counter = 0;
}
else{
fprintf(fp,",");
}
}
fclose(fp);
printf("\n %sfile created",filename);
}
int main(int argc, char *argv[]){
printf("1\n");
//read from args
int xs;
int ys;
int zs;
int time;
sscanf(argv[1],"%d",);
sscanf(argv[2],"%d",);
sscanf(argv[3],"%d",);
sscanf(argv[4],"%d",);


int arraySize = xs*ys*zs*3;
//allocate memeory for array. This is done so that stack memory doesn't run 
out.'
float* sally;
sally = (float*)malloc((arraySize) * sizeof(float));

//runs the code. One of the args is a pointer so no return type is needed.
gen_sally(xs,ys,zs,time,sally);
//create varibles for file generation
char filename[20] = "results.csv";
create_csv(filename, sally, arraySize);

free(sally);
return 0;
}

___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Search the list archives at: http://markmail.org/search/?q=ParaView

Follow this link to subscribe/unsubscribe:
https://public.kitware.com/mailman/listinfo/paraview