Applying curvature on leaf mesh

I am following this tutorial, and I create my leaf mesh:
https://wiki.grogra.de/doku.php?id=tutorials:leaf-triangulation
Now I would like to have a one directional curvature,either upward or downward. Is there a way to do that without editing manually every single point? Something like the command “Scale” that transform the mesh

so I came up with this solution that works pretty well in my case. I have no time to generalize it, but it might easy, or maybe even already generalizable and could be included as a function in groimp. i don’t know




static float curvature =CURVATURE_BLADES_MEAN; // chose the curvature, numbers can be positive or negative
static float baseSpacing = 0.0333333333; //this is the distance between the points on the main vein. I have 31 points so 30 segments. that means the segments length 1/30. This number is relative, then it need to be scaled based on the real area, but after the mesh is created.

static float get_lnorm_curvature(float input, float nr, float LW_ratio){
	if(curvature ==0){curvature =0.00000000000001;}
	float radians	=	Math.toRadians(curvature);
	float output	=	LW_ratio*input*2 * Math.cos((nr+1)*radians/2)*Math.sin(nr*radians/2)/Math.sin(radians/2);
	return output;
};

static float get_z_axis(float input, int nr,float LW_ratio){
		if(curvature ==0){curvature =0.00000000000001;}
	float radians	=	Math.toRadians(curvature);
	float output	=	LW_ratio*2*input * Math.sin((nr+1)*radians/2)*Math.sin(nr*radians/2)/Math.sin(radians/2);
	return output;
};

static float getCurvedX(float xDist, float LW_ratio) {
		if(curvature ==0){curvature =0.00000000000001;}
    float radians = Math.toRadians(curvature);
    float nr      =xDist / baseSpacing;  // key parameter mapping

    return LW_ratio*2*baseSpacing 
        * Math.cos((nr + 1) * radians / 2) 
        * Math.sin(nr       * radians / 2) 
        / Math.sin(radians / 2);
}

static float getCurvedZ(float xDist,float LW_ratio) {
		if(curvature ==0){curvature =0.00000000000001;}
    float radians = Math.toRadians(curvature);
    float nr      = xDist / baseSpacing;  // key parameter mapping

    return LW_ratio*2*baseSpacing 
        * Math.sin((nr + 1) * radians / 2) 
        * Math.sin(nr       * radians / 2) 
        / Math.sin(radians / 2);
}


static void Cotyledon(float LW_ratio) {
	
        ArrayList data = new ArrayList();

        // Populate the list with the values from the arrays
           for (int i = 0; i <= 30; i++) {
            float[] lnorm = anyArray(0, get_lnorm_curvature(baseSpacing, i,LW_ratio), get_z_axis(baseSpacing, i,LW_ratio));
            data.add(lnorm);
        }

lnorm1	=	(float[])	data.get(	0	)	;
lnorm2	=	(float[])	data.get(	1	)	;
lnorm3	=	(float[])	data.get(	2	)	;
lnorm4	=	(float[])	data.get(	3	)	;
lnorm5	=	(float[])	data.get(	4	)	;
lnorm6	=	(float[])	data.get(	5	)	;
lnorm7	=	(float[])	data.get(	6	)	;
lnorm8	=	(float[])	data.get(	7	)	;
lnorm9	=	(float[])	data.get(	8	)	;
lnorm10	=	(float[])	data.get(	9	)	;
lnorm11	=	(float[])	data.get(	10	)	;
lnorm12	=	(float[])	data.get(	11	)	;
lnorm13	=	(float[])	data.get(	12	)	;
lnorm14	=	(float[])	data.get(	13	)	;
lnorm15	=	(float[])	data.get(	14	)	;
lnorm16	=	(float[])	data.get(	15	)	;
lnorm17	=	(float[])	data.get(	16	)	;
lnorm18	=	(float[])	data.get(	17	)	;
lnorm19	=	(float[])	data.get(	18	)	;
lnorm20	=	(float[])	data.get(	19	)	;
lnorm21	=	(float[])	data.get(	20	)	;
lnorm22	=	(float[])	data.get(	21	)	;
lnorm23	=	(float[])	data.get(	22	)	;
lnorm24	=	(float[])	data.get(	23	)	;
lnorm25	=	(float[])	data.get(	24	)	;
lnorm26	=	(float[])	data.get(	25	)	;
lnorm27	=	(float[])	data.get(	26	)	;
lnorm28	=	(float[])	data.get(	27	)	;
lnorm29	=	(float[])	data.get(	28	)	;
lnorm30	=	(float[])	data.get(	29	)	;
lnorm31	=	(float[])	data.get(	30	)	;




ArrayList data_left = new ArrayList();
float position_x_temporary;
float position_y_temporary;
// Populate the list with the values from the arrays


for (int i = 0; i <= 30; i++) {
	float xDist = get_xj(baseSpacing* i);  // your irregular X
	float z     = getCurvedZ(xDist,LW_ratio);       // apply same arc curvature
	float x     = getCurvedX(xDist,LW_ratio);       // apply same arc curvature

	// fixed_value might be your Y or something else:
	float[] p   = anyArray(get_yj(i*baseSpacing+baseSpacing/2)/LW_ratio, x, z); 

	data_left.add(p);
}

p1	=	(float[])	data_left.get(	0	)	;
p2	=	(float[])	data_left.get(	1	)	;
p3	=	(float[])	data_left.get(	2	)	;
p4	=	(float[])	data_left.get(	3	)	;
p5	=	(float[])	data_left.get(	4	)	;
p6	=	(float[])	data_left.get(	5	)	;
p7	=	(float[])	data_left.get(	6	)	;
p8	=	(float[])	data_left.get(	7	)	;
p9	=	(float[])	data_left.get(	8	)	;
p10	=	(float[])	data_left.get(	9	)	;
p11	=	(float[])	data_left.get(	10	)	;
p12	=	(float[])	data_left.get(	11	)	;
p13	=	(float[])	data_left.get(	12	)	;
p14	=	(float[])	data_left.get(	13	)	;
p15	=	(float[])	data_left.get(	14	)	;
p16	=	(float[])	data_left.get(	15	)	;
p17	=	(float[])	data_left.get(	16	)	;
p18	=	(float[])	data_left.get(	17	)	;
p19	=	(float[])	data_left.get(	18	)	;
p20	=	(float[])	data_left.get(	19	)	;
p21	=	(float[])	data_left.get(	20	)	;
p22	=	(float[])	data_left.get(	21	)	;
p23	=	(float[])	data_left.get(	22	)	;
p24	=	(float[])	data_left.get(	23	)	;
p25	=	(float[])	data_left.get(	24	)	;
p26	=	(float[])	data_left.get(	25	)	;
p27	=	(float[])	data_left.get(	26	)	;
p28	=	(float[])	data_left.get(	27	)	;
p29	=	(float[])	data_left.get(	28	)	;
p30	=	(float[])	data_left.get(	29	)	;
p31	=	(float[])	data_left.get(	30	)	;

ArrayList data_right = new ArrayList();
position_x_temporary=0;
position_y_temporary=0;

    for (int i = 0; i <= 30; i++) {
        float xDist = get_xj(baseSpacing* i);  // your irregular X
        float z     = getCurvedZ(xDist,LW_ratio);       // apply same arc curvature
        float x     = getCurvedX(xDist,LW_ratio);       // apply same arc curvature

        // fixed_value might be your Y or something else:
        float[] p   = anyArray(-get_yj(i*baseSpacing+baseSpacing/2)/LW_ratio, x, z); 

        data_right.add(p);
    }
p1R=(float[])data_right.get(0);
p2R=(float[])data_right.get(1);
p3R=(float[])data_right.get(2);
p4R=(float[])data_right.get(3);
p5R=(float[])data_right.get(4);
p6R=(float[])data_right.get(5);
p7R=(float[])data_right.get(6);
p8R=(float[])data_right.get(7);
p9R=(float[])data_right.get(8);
p10R=(float[])data_right.get(9);
p11R=(float[])data_right.get(10);
p12R=(float[])data_right.get(11);
p13R=(float[])data_right.get(12);
p14R=(float[])data_right.get(13);
p15R=(float[])data_right.get(14);
p16R=(float[])data_right.get(15);
p17R=(float[])data_right.get(16);
p18R=(float[])data_right.get(17);
p19R=(float[])data_right.get(18);
p20R=(float[])data_right.get(19);
p21R=(float[])data_right.get(20);
p22R=(float[])data_right.get(21);
p23R=(float[])data_right.get(22);
p24R=(float[])data_right.get(23);
p25R=(float[])data_right.get(24);
p26R=(float[])data_right.get(25);
p27R=(float[])data_right.get(26);
p28R=(float[])data_right.get(27);
p29R=(float[])data_right.get(28);
p30R=(float[])data_right.get(29);
p31R=(float[])data_right.get(30);

//vertexDataLeaflet = new FloatList(anyArray(pi[0],pi[1],pi[2],p0[0],p0[1],p0[2],p1[0],p1[1],p1[2],p2[0],p2[1],p2[2],p3[0],p3[1],p3[2],p4[0],p4[1],p4[2],p5[0],p5[1],p5[2],p6[0],p6[1],p6[2],p7[0],p7[1],p7[2],p8[0],p8[1],p8[2],p9[0],p9[1],p9[2],p10[0],p10[1],p10[2],p11[0],p11[1],p11[2],p12[0],p12[1],p12[2],p13[0],p13[1],p13[2],p14[0],p14[1],p14[2],p15[0],p15[1],p15[2],p16[0],p16[1],p16[2],p17[0],p17[1],p17[2],p18[0],p18[1],p18[2],p19[0],p19[1],p19[2],p20[0],p20[1],p20[2],p21[0],p21[1],p21[2],p22[0],p22[1],p22[2],p23[0],p23[1],p23[2],p24[0],p24[1],p24[2],p25[0],p25[1],p25[2],p26[0],p26[1],p26[2],p27[0],p27[1],p27[2],p28[0],p28[1],p28[2],p29[0],p29[1],p29[2],p30[0],p30[1],p30[2],p31[0],p31[1],p31[2],p32[0],p32[1],p32[2],p33[0],p33[1],p33[2],p34[0],p34[1],p34[2],p35[0],p35[1],p35[2],p36[0],p36[1],p36[2],p37[0],p37[1],p37[2],p38[0],p38[1],p38[2],p39[0],p39[1],p39[2],p40[0],p40[1],p40[2],p41[0],p41[1],p41[2],p42[0],p42[1],p42[2],p43[0],p43[1],p43[2],p44[0],p44[1],p44[2],p45[0],p45[1],p45[2],p46[0],p46[1],p46[2],p47[0],p47[1],p47[2],p48[0],p48[1],p48[2],p49[0],p49[1],p49[2],p50[0],p50[1],p50[2],p51[0],p51[1],p51[2],p52[0],p52[1],p52[2],p53[0],p53[1],p53[2],p54[0],p54[1],p54[2],p55[0],p55[1],p55[2]));
vertexDataLeaflet = new FloatList(anyArray(
lnorm1[0],lnorm1[1],lnorm1[2],p1[0],p1[1],p1[2],lnorm2[0],lnorm2[1],lnorm2[2],p1[0],p1[1],p1[2],lnorm2[0],lnorm2[1],lnorm2[2],p2[0],p2[1],p2[2],
lnorm2[0],lnorm2[1],lnorm2[2],p2[0],p2[1],p2[2],lnorm3[0],lnorm3[1],lnorm3[2],p2[0],p2[1],p2[2],lnorm3[0],lnorm3[1],lnorm3[2],p3[0],p3[1],p3[2],
lnorm3[0],lnorm3[1],lnorm3[2],p3[0],p3[1],p3[2],lnorm4[0],lnorm4[1],lnorm4[2],p3[0],p3[1],p3[2],lnorm4[0],lnorm4[1],lnorm4[2],p4[0],p4[1],p4[2],
lnorm4[0],lnorm4[1],lnorm4[2],p4[0],p4[1],p4[2],lnorm5[0],lnorm5[1],lnorm5[2],p4[0],p4[1],p4[2],lnorm5[0],lnorm5[1],lnorm5[2],p5[0],p5[1],p5[2],
lnorm5[0],lnorm5[1],lnorm5[2],p5[0],p5[1],p5[2],lnorm6[0],lnorm6[1],lnorm6[2],p5[0],p5[1],p5[2],lnorm6[0],lnorm6[1],lnorm6[2],p6[0],p6[1],p6[2],
lnorm6[0],lnorm6[1],lnorm6[2],p6[0],p6[1],p6[2],lnorm7[0],lnorm7[1],lnorm7[2],p6[0],p6[1],p6[2],lnorm7[0],lnorm7[1],lnorm7[2],p7[0],p7[1],p7[2],
lnorm7[0],lnorm7[1],lnorm7[2],p7[0],p7[1],p7[2],lnorm8[0],lnorm8[1],lnorm8[2],p7[0],p7[1],p7[2],lnorm8[0],lnorm8[1],lnorm8[2],p8[0],p8[1],p8[2],
lnorm8[0],lnorm8[1],lnorm8[2],p8[0],p8[1],p8[2],lnorm9[0],lnorm9[1],lnorm9[2],p8[0],p8[1],p8[2],lnorm9[0],lnorm9[1],lnorm9[2],p9[0],p9[1],p9[2],
lnorm9[0],lnorm9[1],lnorm9[2],p9[0],p9[1],p9[2],lnorm10[0],lnorm10[1],lnorm10[2],p9[0],p9[1],p9[2],lnorm10[0],lnorm10[1],lnorm10[2],p10[0],p10[1],p10[2],
lnorm10[0],lnorm10[1],lnorm10[2],p10[0],p10[1],p10[2],lnorm11[0],lnorm11[1],lnorm11[2],p10[0],p10[1],p10[2],lnorm11[0],lnorm11[1],lnorm11[2],p11[0],p11[1],p11[2],
lnorm11[0],lnorm11[1],lnorm11[2],p11[0],p11[1],p11[2],lnorm12[0],lnorm12[1],lnorm12[2],p11[0],p11[1],p11[2],lnorm12[0],lnorm12[1],lnorm12[2],p12[0],p12[1],p12[2],
lnorm12[0],lnorm12[1],lnorm12[2],p12[0],p12[1],p12[2],lnorm13[0],lnorm13[1],lnorm13[2],p12[0],p12[1],p12[2],lnorm13[0],lnorm13[1],lnorm13[2],p13[0],p13[1],p13[2],
lnorm13[0],lnorm13[1],lnorm13[2],p13[0],p13[1],p13[2],lnorm14[0],lnorm14[1],lnorm14[2],p13[0],p13[1],p13[2],lnorm14[0],lnorm14[1],lnorm14[2],p14[0],p14[1],p14[2],
lnorm14[0],lnorm14[1],lnorm14[2],p14[0],p14[1],p14[2],lnorm15[0],lnorm15[1],lnorm15[2],p14[0],p14[1],p14[2],lnorm15[0],lnorm15[1],lnorm15[2],p15[0],p15[1],p15[2],
lnorm15[0],lnorm15[1],lnorm15[2],p15[0],p15[1],p15[2],lnorm16[0],lnorm16[1],lnorm16[2],p15[0],p15[1],p15[2],lnorm16[0],lnorm16[1],lnorm16[2],p16[0],p16[1],p16[2],
lnorm16[0],lnorm16[1],lnorm16[2],p16[0],p16[1],p16[2],lnorm17[0],lnorm17[1],lnorm17[2],p16[0],p16[1],p16[2],lnorm17[0],lnorm17[1],lnorm17[2],p17[0],p17[1],p17[2],
lnorm17[0],lnorm17[1],lnorm17[2],p17[0],p17[1],p17[2],lnorm18[0],lnorm18[1],lnorm18[2],p17[0],p17[1],p17[2],lnorm18[0],lnorm18[1],lnorm18[2],p18[0],p18[1],p18[2],
lnorm18[0],lnorm18[1],lnorm18[2],p18[0],p18[1],p18[2],lnorm19[0],lnorm19[1],lnorm19[2],p18[0],p18[1],p18[2],lnorm19[0],lnorm19[1],lnorm19[2],p19[0],p19[1],p19[2],
lnorm19[0],lnorm19[1],lnorm19[2],p19[0],p19[1],p19[2],lnorm20[0],lnorm20[1],lnorm20[2],p19[0],p19[1],p19[2],lnorm20[0],lnorm20[1],lnorm20[2],p20[0],p20[1],p20[2],
lnorm20[0],lnorm20[1],lnorm20[2],p20[0],p20[1],p20[2],lnorm21[0],lnorm21[1],lnorm21[2],p20[0],p20[1],p20[2],lnorm21[0],lnorm21[1],lnorm21[2],p21[0],p21[1],p21[2],
lnorm21[0],lnorm21[1],lnorm21[2],p21[0],p21[1],p21[2],lnorm22[0],lnorm22[1],lnorm22[2],p21[0],p21[1],p21[2],lnorm22[0],lnorm22[1],lnorm22[2],p22[0],p22[1],p22[2],
lnorm22[0],lnorm22[1],lnorm22[2],p22[0],p22[1],p22[2],lnorm23[0],lnorm23[1],lnorm23[2],p22[0],p22[1],p22[2],lnorm23[0],lnorm23[1],lnorm23[2],p23[0],p23[1],p23[2],
lnorm23[0],lnorm23[1],lnorm23[2],p23[0],p23[1],p23[2],lnorm24[0],lnorm24[1],lnorm24[2],p23[0],p23[1],p23[2],lnorm24[0],lnorm24[1],lnorm24[2],p24[0],p24[1],p24[2],
lnorm24[0],lnorm24[1],lnorm24[2],p24[0],p24[1],p24[2],lnorm25[0],lnorm25[1],lnorm25[2],p24[0],p24[1],p24[2],lnorm25[0],lnorm25[1],lnorm25[2],p25[0],p25[1],p25[2],
lnorm25[0],lnorm25[1],lnorm25[2],p25[0],p25[1],p25[2],lnorm26[0],lnorm26[1],lnorm26[2],p25[0],p25[1],p25[2],lnorm26[0],lnorm26[1],lnorm26[2],p26[0],p26[1],p26[2],
lnorm26[0],lnorm26[1],lnorm26[2],p26[0],p26[1],p26[2],lnorm27[0],lnorm27[1],lnorm27[2],p26[0],p26[1],p26[2],lnorm27[0],lnorm27[1],lnorm27[2],p27[0],p27[1],p27[2],
lnorm27[0],lnorm27[1],lnorm27[2],p27[0],p27[1],p27[2],lnorm28[0],lnorm28[1],lnorm28[2],p27[0],p27[1],p27[2],lnorm28[0],lnorm28[1],lnorm28[2],p28[0],p28[1],p28[2],
lnorm28[0],lnorm28[1],lnorm28[2],p28[0],p28[1],p28[2],lnorm29[0],lnorm29[1],lnorm29[2],p28[0],p28[1],p28[2],lnorm29[0],lnorm29[1],lnorm29[2],p29[0],p29[1],p29[2],
lnorm29[0],lnorm29[1],lnorm29[2],p29[0],p29[1],p29[2],lnorm30[0],lnorm30[1],lnorm30[2],p29[0],p29[1],p29[2],lnorm30[0],lnorm30[1],lnorm30[2],p30[0],p30[1],p30[2],
lnorm30[0],lnorm30[1],lnorm30[2],p30[0],p30[1],p30[2],lnorm31[0],lnorm31[1],lnorm31[2],p30[0],p30[1],p30[2],lnorm31[0],lnorm31[1],lnorm31[2],p31[0],p31[1],p31[2],

lnorm1[0],lnorm1[1],lnorm1[2],p1R[0],p1R[1],p1R[2],lnorm2[0],lnorm2[1],lnorm2[2],p1R[0],p1R[1],p1R[2],lnorm2[0],lnorm2[1],lnorm2[2],p2R[0],p2R[1],p2R[2],
lnorm2[0],lnorm2[1],lnorm2[2],p2R[0],p2R[1],p2R[2],lnorm3[0],lnorm3[1],lnorm3[2],p2R[0],p2R[1],p2R[2],lnorm3[0],lnorm3[1],lnorm3[2],p3R[0],p3R[1],p3R[2],
lnorm3[0],lnorm3[1],lnorm3[2],p3R[0],p3R[1],p3R[2],lnorm4[0],lnorm4[1],lnorm4[2],p3R[0],p3R[1],p3R[2],lnorm4[0],lnorm4[1],lnorm4[2],p4R[0],p4R[1],p4R[2],
lnorm4[0],lnorm4[1],lnorm4[2],p4R[0],p4R[1],p4R[2],lnorm5[0],lnorm5[1],lnorm5[2],p4R[0],p4R[1],p4R[2],lnorm5[0],lnorm5[1],lnorm5[2],p5R[0],p5R[1],p5R[2],
lnorm5[0],lnorm5[1],lnorm5[2],p5R[0],p5R[1],p5R[2],lnorm6[0],lnorm6[1],lnorm6[2],p5R[0],p5R[1],p5R[2],lnorm6[0],lnorm6[1],lnorm6[2],p6R[0],p6R[1],p6R[2],
lnorm6[0],lnorm6[1],lnorm6[2],p6R[0],p6R[1],p6R[2],lnorm7[0],lnorm7[1],lnorm7[2],p6R[0],p6R[1],p6R[2],lnorm7[0],lnorm7[1],lnorm7[2],p7R[0],p7R[1],p7R[2],
lnorm7[0],lnorm7[1],lnorm7[2],p7R[0],p7R[1],p7R[2],lnorm8[0],lnorm8[1],lnorm8[2],p7R[0],p7R[1],p7R[2],lnorm8[0],lnorm8[1],lnorm8[2],p8R[0],p8R[1],p8R[2],
lnorm8[0],lnorm8[1],lnorm8[2],p8R[0],p8R[1],p8R[2],lnorm9[0],lnorm9[1],lnorm9[2],p8R[0],p8R[1],p8R[2],lnorm9[0],lnorm9[1],lnorm9[2],p9R[0],p9R[1],p9R[2],
lnorm9[0],lnorm9[1],lnorm9[2],p9R[0],p9R[1],p9R[2],lnorm10[0],lnorm10[1],lnorm10[2],p9R[0],p9R[1],p9R[2],lnorm10[0],lnorm10[1],lnorm10[2],p10R[0],p10R[1],p10R[2],
lnorm10[0],lnorm10[1],lnorm10[2],p10R[0],p10R[1],p10R[2],lnorm11[0],lnorm11[1],lnorm11[2],p10R[0],p10R[1],p10R[2],lnorm11[0],lnorm11[1],lnorm11[2],p11R[0],p11R[1],p11R[2],
lnorm11[0],lnorm11[1],lnorm11[2],p11R[0],p11R[1],p11R[2],lnorm12[0],lnorm12[1],lnorm12[2],p11R[0],p11R[1],p11R[2],lnorm12[0],lnorm12[1],lnorm12[2],p12R[0],p12R[1],p12R[2],
lnorm12[0],lnorm12[1],lnorm12[2],p12R[0],p12R[1],p12R[2],lnorm13[0],lnorm13[1],lnorm13[2],p12R[0],p12R[1],p12R[2],lnorm13[0],lnorm13[1],lnorm13[2],p13R[0],p13R[1],p13R[2],
lnorm13[0],lnorm13[1],lnorm13[2],p13R[0],p13R[1],p13R[2],lnorm14[0],lnorm14[1],lnorm14[2],p13R[0],p13R[1],p13R[2],lnorm14[0],lnorm14[1],lnorm14[2],p14R[0],p14R[1],p14R[2],
lnorm14[0],lnorm14[1],lnorm14[2],p14R[0],p14R[1],p14R[2],lnorm15[0],lnorm15[1],lnorm15[2],p14R[0],p14R[1],p14R[2],lnorm15[0],lnorm15[1],lnorm15[2],p15R[0],p15R[1],p15R[2],
lnorm15[0],lnorm15[1],lnorm15[2],p15R[0],p15R[1],p15R[2],lnorm16[0],lnorm16[1],lnorm16[2],p15R[0],p15R[1],p15R[2],lnorm16[0],lnorm16[1],lnorm16[2],p16R[0],p16R[1],p16R[2],
lnorm16[0],lnorm16[1],lnorm16[2],p16R[0],p16R[1],p16R[2],lnorm17[0],lnorm17[1],lnorm17[2],p16R[0],p16R[1],p16R[2],lnorm17[0],lnorm17[1],lnorm17[2],p17R[0],p17R[1],p17R[2],
lnorm17[0],lnorm17[1],lnorm17[2],p17R[0],p17R[1],p17R[2],lnorm18[0],lnorm18[1],lnorm18[2],p17R[0],p17R[1],p17R[2],lnorm18[0],lnorm18[1],lnorm18[2],p18R[0],p18R[1],p18R[2],
lnorm18[0],lnorm18[1],lnorm18[2],p18R[0],p18R[1],p18R[2],lnorm19[0],lnorm19[1],lnorm19[2],p18R[0],p18R[1],p18R[2],lnorm19[0],lnorm19[1],lnorm19[2],p19R[0],p19R[1],p19R[2],
lnorm19[0],lnorm19[1],lnorm19[2],p19R[0],p19R[1],p19R[2],lnorm20[0],lnorm20[1],lnorm20[2],p19R[0],p19R[1],p19R[2],lnorm20[0],lnorm20[1],lnorm20[2],p20R[0],p20R[1],p20R[2],
lnorm20[0],lnorm20[1],lnorm20[2],p20R[0],p20R[1],p20R[2],lnorm21[0],lnorm21[1],lnorm21[2],p20R[0],p20R[1],p20R[2],lnorm21[0],lnorm21[1],lnorm21[2],p21R[0],p21R[1],p21R[2],
lnorm21[0],lnorm21[1],lnorm21[2],p21R[0],p21R[1],p21R[2],lnorm22[0],lnorm22[1],lnorm22[2],p21R[0],p21R[1],p21R[2],lnorm22[0],lnorm22[1],lnorm22[2],p22R[0],p22R[1],p22R[2],
lnorm22[0],lnorm22[1],lnorm22[2],p22R[0],p22R[1],p22R[2],lnorm23[0],lnorm23[1],lnorm23[2],p22R[0],p22R[1],p22R[2],lnorm23[0],lnorm23[1],lnorm23[2],p23R[0],p23R[1],p23R[2],
lnorm23[0],lnorm23[1],lnorm23[2],p23R[0],p23R[1],p23R[2],lnorm24[0],lnorm24[1],lnorm24[2],p23R[0],p23R[1],p23R[2],lnorm24[0],lnorm24[1],lnorm24[2],p24R[0],p24R[1],p24R[2],
lnorm24[0],lnorm24[1],lnorm24[2],p24R[0],p24R[1],p24R[2],lnorm25[0],lnorm25[1],lnorm25[2],p24R[0],p24R[1],p24R[2],lnorm25[0],lnorm25[1],lnorm25[2],p25R[0],p25R[1],p25R[2],
lnorm25[0],lnorm25[1],lnorm25[2],p25R[0],p25R[1],p25R[2],lnorm26[0],lnorm26[1],lnorm26[2],p25R[0],p25R[1],p25R[2],lnorm26[0],lnorm26[1],lnorm26[2],p26R[0],p26R[1],p26R[2],
lnorm26[0],lnorm26[1],lnorm26[2],p26R[0],p26R[1],p26R[2],lnorm27[0],lnorm27[1],lnorm27[2],p26R[0],p26R[1],p26R[2],lnorm27[0],lnorm27[1],lnorm27[2],p27R[0],p27R[1],p27R[2],
lnorm27[0],lnorm27[1],lnorm27[2],p27R[0],p27R[1],p27R[2],lnorm28[0],lnorm28[1],lnorm28[2],p27R[0],p27R[1],p27R[2],lnorm28[0],lnorm28[1],lnorm28[2],p28R[0],p28R[1],p28R[2],
lnorm28[0],lnorm28[1],lnorm28[2],p28R[0],p28R[1],p28R[2],lnorm29[0],lnorm29[1],lnorm29[2],p28R[0],p28R[1],p28R[2],lnorm29[0],lnorm29[1],lnorm29[2],p29R[0],p29R[1],p29R[2],
lnorm29[0],lnorm29[1],lnorm29[2],p29R[0],p29R[1],p29R[2],lnorm30[0],lnorm30[1],lnorm30[2],p29R[0],p29R[1],p29R[2],lnorm30[0],lnorm30[1],lnorm30[2],p30R[0],p30R[1],p30R[2],
lnorm30[0],lnorm30[1],lnorm30[2],p30R[0],p30R[1],p30R[2],lnorm31[0],lnorm31[1],lnorm31[2],p30R[0],p30R[1],p30R[2],lnorm31[0],lnorm31[1],lnorm31[2],p31R[0],p31R[1],p31R[2]
));


//FloatList curved =        adjustLengthWidthAndApplyCurvature(vertexDataLeaflet, 10,1); // Apply curvature along x-axis

cotyledon_mesh = getMesh(vertexDataLeaflet);

}```