Hello,

Im trying to write a program which is computing surface area of a 3D geometry by using Newell Methods.
Geometry data should be reading from a text file. The lines which has 3 columns point out coordinates of geometry's vertices. The lines which has 2 columns point out connectivities of edges by vertices. And other lines point out loops compositons by edges. So The text file defines the geometry. When I change the file, the geometry will change e.x: cube, rectangular prism...

I can create arrays to use in formulas of Newell Methods and I can compute the area of geometry surface by writing the data in program as hardcode.Also I can make line read from text file.But I cant create arrays and store datas from reading text file. I need to combine those.

The program is in below and attached which can calculate by hard code. I need help this to compute the area by reading from text file. Thanks for all suggestions.

import javax.swing.*;
import java.util.*;


class surfaces_area
{
public static void main(String args[])
{
	
double edges[][][]={ 
//	  V1		   V2
	{{0.0,0.0,0.0},{5.0,0.0,0.0}},    // E1
//	  V2		   V3		
	{{5.0,0.0,0.0},{5.0,4.0,0.0}},    // E2
//	  V4		   V3		   
         {{0.0,4.0,0.0},{5.0,4.0,0.0}},    // E3
//	  V1		   V4
	{{0.0,0.0,0.0},{0.0,4.0,0.0}},    // E4
//	  V5		   V4
	{{0.0,4.0,3.0},{0.0,4.0,0.0}},    // E5
//	  V6	            V5
	{{5.0,4.0,3.0},{0.0,4.0,3.0}},    // E6
//	  V7	            V6
	{{5.0,0.0,3.0},{5.0,4.0,3.0}},    // E7
//	  V7		   V8
	{{5.0,0.0,3.0},{0.0,0.0,3.0}},    // E8
//	  V8		   V5
	{{0.0,0.0,3.0},{0.0,4.0,3.0}},    // E9
//	  V2		   V7	
	{{5.0,0.0,0.0},{5.0,0.0,3.0}},    // E10
//	  V8	            V1	
	{{0.0,0.0,3.0},{0.0,0.0,0.0}},    // E11
//         V3          	   V6	
	{{5.0,4.0,0.0},{5.0,4.0,3.0}},    // E12	
					
								
};
					

		double Nx=0;
	         int j=0;
	         int k;
			
	for (j=0;j<4;j++)
	{
	k=0;
			
	    for (k=0;k<2;k++)
			
	{
	if (k==1)
				
	{
					
	}		
	else
	{		
					
						
								
Nx = Nx+ 0.5*((edges[j][k][1]-edges[j][k+1][1])*(edges[j][k][2]+edges[j][k+1][2]));         //Newell Methods's Formula
		
System.out.println("sonuc = "+Nx);
	
//  I can compute  Ny and Nz as above. So total surface equals as
//N=squareroot(Nx*Nx+Ny*Ny+Nz*Nz)
		
	}}
	

}}}
Attachments
#number of vertices
8

#cordinates of vertices

0.0 0.0 0.0
5.0 0.0 0.0
5.0 4.0 0.0
0.0 4.0 0.0
0.0 4.0 3.0
5.0 4.0 3.0
5.0 0.0 3.0
0.0 0.0 3.0

#Number of edges
12

#Edges compositions
1 2
2 3
4 3
1 4
5 4
6 5
7 6
7 8
8 5
2 7
8 1
3 6

# Number of loops
6

# Loops compositions
4
8 9 -6 -7
4
10 7 -12 -2
4
9 5 -4 -11
4
-1 -11 -8 -10
4
3 12 6 5


# Number of faces 
6

# Faces compositions
1
2
3
4
5
6
newell_methods.jpg 39.89 KB
import javax.swing.*;
import java.util.*;  
import java.util.*;


class surfaces_area
{
public static void main(String args[])
{
	
double edges[][][]={ 
//	  V1		   V2
	{{0.0,0.0,0.0},{5.0,0.0,0.0}},    // E1
//	  V2		   V3		
	{{5.0,0.0,0.0},{5.0,4.0,0.0}},    // E2
//	  V4		   V3		   
         {{0.0,4.0,0.0},{5.0,4.0,0.0}},    // E3
//	  V1		   V4
	{{0.0,0.0,0.0},{0.0,4.0,0.0}},    // E4
//	  V5		   V4
	{{0.0,4.0,3.0},{0.0,4.0,0.0}},    // E5
//	  V6	            V5
	{{5.0,4.0,3.0},{0.0,4.0,3.0}},    // E6
//	  V7	            V6
	{{5.0,0.0,3.0},{5.0,4.0,3.0}},    // E7
//	  V7		   V8
	{{5.0,0.0,3.0},{0.0,0.0,3.0}},    // E8
//	  V8		   V5
	{{0.0,0.0,3.0},{0.0,4.0,3.0}},    // E9
//	  V2		   V7	
	{{5.0,0.0,0.0},{5.0,0.0,3.0}},    // E10
//	  V8	            V1	
	{{0.0,0.0,3.0},{0.0,0.0,0.0}},    // E11
//         V3          	   V6	
	{{5.0,4.0,0.0},{5.0,4.0,3.0}},    // E12	
					
								
};
					

		double Nx=0;
	         int j=0;
	         int k;
			
	for (j=0;j<4;j++)
	{
	k=0;
			
	    for (k=0;k<2;k++)
			
	{
	if (k==1)
				
	{
					
	}		
	else
	{		
					
						
								
Nx = Nx+ 0.5*((edges[j][k][1]-edges[j][k+1][1])*(edges[j][k][2]+edges[j][k+1][2]));         //Newell Methods's Formula
		
System.out.println("sonuc = "+Nx);
	
//  I can compute  Ny and Nz as above. So total surface equals as
//N=squareroot(Nx*Nx+Ny*Ny+Nz*Nz)
		
	}}
	

}}}
import javax.swing.*;
import java.util.*;


class surfaces_area2
{
public static void main(String args[])
{
	


// double vertices[][]={{0.0,0.0,0.0},{5.0,0.0,0.0},{5.0,0.0,0.0}};
// 
// 
// 
// 
// 		double edges[][][]={
// //						   V1			 V2
// 					{{0.0,0.0,0.0},{5.0,0.0,0.0}},   // E1
// //						   V2			 V3					
// 					{{5.0,0.0,0.0},{5.0,0.0,0.0}},	 // E2
// //						   V4			 V3						
// 					{{0.0,4.0,0.0},{5.0,4.0,0.0}},	 // E3
// //						   V1			 V4
// 					{{0.0,0.0,0.0},{0.0,4.0,0.0}},	 // E4
// //						   V5			 V4
// 					{{0.0,4.0,3.0},{0.0,4.0,0.0}},	 // E5
// //						   V6			 V5
// 					{{5.0,4.0,3.0},{0.0,4.0,3.0}},	 // E6
// //						   V7			 V6
// 					{{5.0,0.0,3.0},{5.0,4.0,3.0}},	 // E7
// //						   V7			 V8
// 					{{5.0,0.0,3.0},{0.0,0.0,3.0}},	 // E8	
// //						   V8			 V5
// 					{{0.0,0.0,3.0},{0.0,4.0,3.0}},	 // E9
// //						   V2			 V7	
// 					{{5.0,0.0,0.0},{5.0,0.0,3.0}},	 // E10
// //						   V8			 V1	
// 					{{0.0,0.0,3.0},{0.0,0.0,0.0}},	 // E11
// //						   V3			 V6	
// 					{{5.0,4.0,0.0},{5.0,4.0,3.0}},	 // E12	
// 					
// 								
// 					};
					
					
// 					//6 loops
// String L1[]={{{0.0,0.0,0.0},{5.0,0.0,0.0}},{{5.0,0.0,0.0},{5.0,0.0,0.0}},-{{0.0,4.0,0.0},{5.0,4.0,0.0}},-{{0.0,0.0,0.0},{0.0,4.0,0.0}}};
// //4
// String L2[]={{{5.0,0.0,3.0},{0.0,0.0,3.0}},{{0.0,0.0,3.0},{0.0,4.0,3.0}},-{{5.0,4.0,3.0},{0.0,4.0,3.0}},{5.0,0.0,3.0},{5.0,4.0,3.0}}};
// //4
// String L3[]={{{5.0,0.0,0.0},{5.0,0.0,3.0}},{{5.0,0.0,3.0},{5.0,4.0,3.0}},-{{5.0,4.0,0.0},{5.0,4.0,3.0}},{{5.0,0.0,0.0},{5.0,0.0,0.0}}};
// //4
// String L4[]={{{0.0,0.0,3.0},{0.0,4.0,3.0}},{{0.0,4.0,3.0},{0.0,4.0,0.0}},-{{0.0,0.0,0.0},{0.0,4.0,0.0}},-{{0.0,0.0,3.0},{0.0,0.0,0.0}}};
// //4
// String L5[]={-{{0.0,0.0,0.0},{5.0,0.0,0.0}},-{{0.0,0.0,3.0},{0.0,0.0,0.0}},-{{5.0,0.0,3.0},{0.0,0.0,3.0}},-{{5.0,0.0,0.0},{5.0,0.0,3.0}}};
// //4
// String L6[]={{{0.0,4.0,0.0},{5.0,4.0,0.0}},{{5.0,4.0,0.0},{5.0,4.0,3.0}},{{5.0,4.0,3.0},{0.0,4.0,3.0}},{{0.0,4.0,3.0},{0.0,4.0,0.0}}};
// //4
// 					
// 					String loops[]={"L1","L2","L3","L4","L5","L6"}
// 					
					double loops[][][][]={
{{{0.0,0.0,0.0},{5.0,0.0,0.0}},{{5.0,0.0,0.0},{5.0,0.0,0.0}},{{0.0,4.0,0.0},{5.0,4.0,0.0}},{{0.0,0.0,0.0},{0.0,4.0,0.0}}},// L1 
{{{5.0,0.0,3.0},{0.0,0.0,3.0}},{{0.0,0.0,3.0},{0.0,4.0,3.0}},{{5.0,4.0,3.0},{0.0,4.0,3.0}},{{5.0,0.0,3.0},{5.0,4.0,3.0}}},  // L2
{{{5.0,0.0,0.0},{5.0,0.0,3.0}},{{5.0,0.0,3.0},{5.0,4.0,3.0}},{{5.0,4.0,0.0},{5.0,4.0,3.0}},{{5.0,0.0,0.0},{5.0,0.0,0.0}}}, // L3
{{{0.0,0.0,3.0},{0.0,4.0,3.0}},{{0.0,4.0,3.0},{0.0,4.0,0.0}},{{0.0,0.0,0.0},{0.0,4.0,0.0}},{{0.0,0.0,3.0},{0.0,0.0,0.0}}},// L4						
{{{0.0,0.0,0.0},{5.0,0.0,0.0}},{{0.0,0.0,3.0},{0.0,0.0,0.0}},{{5.0,0.0,3.0},{0.0,0.0,3.0}},{{5.0,0.0,0.0},{5.0,0.0,3.0}}},// L5
{{{0.0,4.0,0.0},{5.0,4.0,0.0}},{{5.0,4.0,0.0},{5.0,4.0,3.0}},{{5.0,4.0,3.0},{0.0,4.0,3.0}},{{0.0,4.0,3.0},{0.0,4.0,0.0}}} // L6
};



System.out.println(loops[0][0][1][0]);

}}

/////////////////////////////System.out.println("Coordinate = "+edges[11][1][2]);

Are you looking for help with this program? If so could you explain in more detail what your problem is.

But I cant create arrays and store datas from reading text file

Can you explain this better?

Thanks for your interest. you find information about program how works.
NEWELL METHODS:


you can find the formula, photo and commnent file in attach.


The text file :

#cordinates of vertices
0.0 0.0 0.0 (this line should define V[0][c] array)
5.0 0.0 0.0
5.0 4.0 0.0
0.0 4.0 0.0
0.0 4.0 3.0
5.0 4.0 3.0
5.0 0.0 3.0
0.0 0.0 3.0
. . . (this line should define V[n][c] array)

#Edges compositions
0 1 (this line should define E[0][m] array)
1 2 (this line should define E[1][m] array)
3 2
0 3
4 3
5 4
6 5
6 7
7 4
1 6
7 0
2 5
. .
. . (this line should define E[k][m] array)

# Loops compositions
7 8 -5 -6 (this line should define L[0][j] array)
9 6 -11 -1 (this line should define L[1][j] array)
8 4 -3 -10
-0 -10 -7 -9
2 11 5 4
. . . . . (this line should define L[j] array)

# Faces compositions
0
1
2
3
4
5
.
.

I wanna compute area and normals of surfaces of 3D geometry by using newell formula.
First I need the read datas of geometry from a text file. This datas should be read into arrays.
The program which I sent in below reads datas from hard codes. ( Which I wrote in "edges" array.) This array should be stored from text file.
For newell formula, The variables should be read from faces composition array. And It should be calculated for each surfaces and sum of all by using " nested for loops" .
ex:
the text file defines a rectangular prism.
For each surfaces I need to calculate newell formula. Serie's upper limit,m is number of surfaces. This serie will calculate in "for loop" ( i=0 ,i<6, i++). While "for loop" is calculating formula, it needs to y_i and z_i variables. The main point for me is begening here.
It should reach to y_i and z_i. they are compenents of vertices coordinates. For renctangular prism. Each surfaces has four edges. An edge has two vertices. A vertice has a coordinate( x,y and z compenent value)
I need to read x,y and z values connectivited eachother by edges and surfaces. And I made read these values in "nested for loops " by reading from hardcode(from line10 to line34) . But I need to read the values from text file in "nested for loops". Coz when I change the geometry ( when I create the new text file belong to different geometry) I can calculate the area of surfaces. By reading from text file , The upper limtits of series and loops will be independent.

The arrays in below should be read from edge compositions part in text file
E[0][m]={0,1}
E[1][m]={1,2}
E[2][m]={3,2}
E[3][m]={0,3}
E[4][m]={4,3}
E[5][m]={5,4}
E[6][m]={6,5}
E[7][m]={6,7}
E[8][m]={7,4}
E[9][m]={1,6}
E[10][m]={7,0}
E[11][m]={2,5}


Comment:
To reach ‘y_i’ value of first surface,

• i=0. (i<number of loops, i++)
L[0][j]={7 8 -5 -6}
• j=0 ( j< size of each loop, j++)
L[0][0]=7=k this should be index of E(k) array. So it is E[7][m]={6,7}
E[7][m]={6,7}
• m=0 (m<2, m++)
E[7][0]=6=n this should be index of V(n). So it is V[6][c]={ 5.0 ,0.0 ,3.0}
V[6][c]={ 5.0 ,0.0 ,3.0}
• c=1 (n<3,n++)
V[6][1]=0.0 this should be ‘y’ component of the vertice’s coordinate . So it is value of ‘y_i’ variable in formula.( )


total area of surfaces :

N=[(n_x)^2+(n_y)^2+(n_z)^2]^0.5

Can you show the code you are having the problems with?
Your first post said:

I cant create arrays and store datas from reading text file

I have no idea what your program is supposed to do, but I might be able to help you read data from a file and store it in arrays in your code.

I sent the codes in attach by first message. And Im writng new one. I will send it again.

This article has been dead for over six months. Start a new discussion instead.