求高人把小弟我的程序改的可以编译,组建就好,多谢
求高人把我的程序改的可以编译,组建就好,谢谢!
#include "stdafx.h"
#include <windows.h>
# include<stdio.h>
# define PI 3.1415926 //PI的值
# include<math.h>
#include <gl/gl.h>
# include<gl/glu.h>
void main()
{
int M,N,C,H;
double c0,c1,c2,circlecenterx[M],circlecentery[M],circlebanjingcha[],pointsx[][],pointsy[][],pointsz[][];
//double Eradius[6][16],datesignalSna[6][16],datesignalSnb[6][16],datesignalSnc[6][16];
N=16; //每个截面测量的点数
M=6; //共测量的截面个数
C=50; //常量,为了是重构效果逼真,也就是圆柱的理论直径
H=400; //重构圆柱的高
c0=1.0;
c1=-sin(PI*98.4375/180)/sin(PI*11.25/180);
c2=sin(PI*87.1875/180)/sin(PI*11.25/180);
//权数的初始化,其中,c1=-sin[2*PI*(p2-p0)/N]/sin[2*PI(p2-p1)/N],c2=sin[2*PI*(p1-p0)/N]/sin[2*PI(p2-p1)/N]
static GLdouble Eradius[6][16]={
{0.6556,0.4591,0.5706,0.6120,0.5344,0.7986,0.6536,0.5883,0.5626,0.8480,0.6106,0.8336,0.7322,0.7229,0.6647,0.8598},
{0.6532,0.5804,0.4951,0.6437,0.5748,0.5563,0.6834,0.6262,0.6534 ,0.5478 ,0.6511,0.6234,0.7530,0.7683,0.8508,0.5703},
{0.7304,0.5702,0.6598,0.5327,0.7489,0.6421,0.7851,0.5743,0.5868 ,0.5676 ,0.7196, 0.7066,0.7101,0.6804,0.7267,0.5925},
{-0.8438,-0.6494,-0.7955,-0.5725,-0.5315,-0.7086,-0.6459,-0.4042,-0.7860,-0.5594,-0.9419,-0.6337,-0.5525,-0.3446,-0.5581,-0.4037},
{-0.8141,-0.8629,-0.7870,-0.5993,-0.6787,-0.5629,-0.5459,-0.7358,-0.7298,-0.7452,-0.5622,-0.5992,-0.4951,-0.5708,-0.5949,-0.6200},
{-0.7142,-0.7285,-0.9087,-0.7018,-0.7234,-0.670,-0.5431,-0.6886,-0.8364,-0.6050,-0.7131,-0.6658,-0.4868,-0.5104,-0.6668,-0.4764}
};
//圆度误差的初始化,假设的值
static GLdouble datesignalSna[6][16]={
{-1.8828,-1.9780,-1.9707,-1.9560,-1.9276,-1.9048,-1.9121,-1.9121,-1.8974,-1.9341,-1.9487,-1.9194,-1.8828,-1.8828,-1.8608,-1.8681},
{-1.8755,-1.8755,-1.9121,-1.8755,-1.8828,-1.8681,-1.8462,-1.8535,-1.8535,-1.8974,-1.9048,-1.8901,-1.8681,-1.8601,-1.8681,-1.8535},
{-1.8901,-1.8535,-1.8315,-1.8535,-1.7729,-1.7729,-1.8462,-1.8168,-1.8462,-1.8462,-1.8315,-1.8242,-1.8022,-1.8242,-1.7802,-1.8242},
{0.4469,0.4103,0.4249,0.4982,0.5055,0.5421,0.6154,0.6886,0.7619,0.8205,0.8718,0.9451,0.9817,1.0183,1.0623,1.1209},
{0.4908,0.5348,0.5714,0.6007,0.6081,0.6667,0.7619,0.8205,0.8498,0.9597,0.9670,1.0256,1.1136,1.1795,1.1502,1.2088},
{0.6374,0.6154,0.7326,0.7839,0.8498,0.8425,0.9158,0.9963,1.0476,1.0842,1.1575,1.2381,1.3114,1.3626,1.3846,1.4212}
};
static GLdouble datesignalSnb[6][16]={
{-0.1539,-0.0513,-0.0073,-0.0366,-0.0220,-0.0733,0.0073,-0.0513,-0.0220,0.0147,0.0220,-0.0147,-0.0367,-0.0147,-0.0220,0.0659},
{-0.1685,-0.2271,-0.1099,-0.1685,-0.1465,-0.1245,-0.1758,-0.1392,-0.1465,-0.0659,-0.1100,-0.0806,-0.1172,-0.1245,-0.0440,-0.1172},
{-0.1905,-0.1392,-0.1099,-0.1172,-0.1905,-0.1245,-0.1245,-0.0952,-0.586,-0.0659,-0.0733,-0.1245,-0.0440,-0.0513,-0.1099,-0.0733},
{-2.0293,-2.0146,-2.036,-2.1245,-2.1465,-2.2418,-2.1905,-2.2491,-2.1905,-2.2418,-2.2857,-2.2930,-2.2491,-2.2711,-2.3663,-2.2930},
{-2.0000,-2.0073,-2.0366,-2.1245,-2.1612,-2.1978,-2.2491,-2.2198,-2.2784,-2.2637,-2.2784,-2.3004,-2.3663,-2.3150,-2.1905,-2.3956},
{-1.8535,-1.8974,-1.9853,-2.0733,-2.1319,-2.1905,-2.2051,-2.2271,-2.2418,-2.2198,-2.3297,-2.2857,-2.3004,-2.3004,-2.2857,-2.3297}
};
static GLdouble datesignalSnc[6][16]={
{1.4505,1.4139,1.5092,1.4799,1.5604,1.4359,1.4359,1.3700,1.3919,1.3846,1.3407,1.3333,1.3114,1.2527,1.3040,1.2601},
{1.4286,1.4799,1.4872,1.4579,1.4652,1.5238,1.4505,1.4579,1.4432,1.3993,1.3846,1.3553,1.3776,1.2967,1.3114,1.3407},
{1.5092,1.5018,1.4725,1.5604,1.4872,1.5165,1.4872,1.5165,1.4432,1.3993,1.4725,1.4066,1.3846,1.3333,1.3846,1.3626},
{0.9817,0.9377,0.9890,0.8571,0.8571,0.7546,0.6667,0.5934,0.9158,0.6081,0.4762,0.4615,0.4396,0.3590,0.3297,0.2784},
{0.8425,0.8498,0.7546,0.7912,0.7106,0.6886,0.5861,0.5641,0.5641,0.4835,0.4762,0.4322,0.4249,0.3004,0.3371,0.2125},
{0.6813,0.6740,0.6667,0.5934,0.6447,0.6520,0.6300,0.5275,0.5055,0.4322,0.3590,0.3517,0.2564,0.2051,0.1978,0.1758}
};
//六个截面的三个传感器分别输出的输出值
int i,j;
for(j=0;j<M;j++)
{
for(i=0;i<N;i++)
{circlecenterx[j]+=2*Eradius[j][i]*cos(2*PI*i/N)/N;
circlecentery[j][]+=2*Eradius[j][i]*sin(2*PI*i/N)/N;
circlebangjingcha[j][]+=(c0*datesignalSna[j][i]+c1*datesignalSnb[j][i]+c2*datesignalSnc[j][i])/(c0+c1+c2)/N;
}
}
//计算出最小二乘圆心在绝对坐标系的初始位置,以及各个截面之间的半径差
//由于各个截面的圆度误差只是反映圆轮廓的变化量,所以为了重构的圆柱度形貌更加逼真,在圆度误差上加上一个常量C。
for(j=0;j<M;j+=H/(M-1))
glBegin(GL_LINE_LOOP);
{for(i=0;i<N;i++)
{pointsx[j][i]=circlecenterx[j]+(Eradius[j][i]+C+circlebanjingcha[j])*cos(2*PI*i/N);
pointsy[j][i]=circlecentery[j]+(Eradius[j][i]+C+circlebanjingcha[j])*sin(2*PI*i/N);
pointz[j][i]=j*H/M;
};
glVertex3f(pointsx[j][i],pointsy[j][i],pointsz[j][i]);
glVertex3f(pointsx[j][i+1],pointsy[j][i+1],pointsz[j][i+1]);
}
glEnd();
//分别连接M个圆面
}
主要是数组的定义,以及把二维数组给一维数组问题赋值的问题。
------解决方案--------------------
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
------解决方案--------------------
#include "stdafx.h"
#include "stdafx.h"
#include <windows.h>
# include<stdio.h>
# define PI 3.1415926 //PI的值
#include "stdafx.h"
#include <windows.h>
# include<stdio.h>
# define PI 3.1415926 //PI的值
# include<math.h>
#include <gl/gl.h>
# include<gl/glu.h>
void main()
{
int M,N,C,H;
double c0,c1,c2,circlecenterx[M],circlecentery[M],circlebanjingcha[],pointsx[][],pointsy[][],pointsz[][];
//double Eradius[6][16],datesignalSna[6][16],datesignalSnb[6][16],datesignalSnc[6][16];
N=16; //每个截面测量的点数
M=6; //共测量的截面个数
C=50; //常量,为了是重构效果逼真,也就是圆柱的理论直径
H=400; //重构圆柱的高
c0=1.0;
c1=-sin(PI*98.4375/180)/sin(PI*11.25/180);
c2=sin(PI*87.1875/180)/sin(PI*11.25/180);
//权数的初始化,其中,c1=-sin[2*PI*(p2-p0)/N]/sin[2*PI(p2-p1)/N],c2=sin[2*PI*(p1-p0)/N]/sin[2*PI(p2-p1)/N]
static GLdouble Eradius[6][16]={
{0.6556,0.4591,0.5706,0.6120,0.5344,0.7986,0.6536,0.5883,0.5626,0.8480,0.6106,0.8336,0.7322,0.7229,0.6647,0.8598},
{0.6532,0.5804,0.4951,0.6437,0.5748,0.5563,0.6834,0.6262,0.6534 ,0.5478 ,0.6511,0.6234,0.7530,0.7683,0.8508,0.5703},
{0.7304,0.5702,0.6598,0.5327,0.7489,0.6421,0.7851,0.5743,0.5868 ,0.5676 ,0.7196, 0.7066,0.7101,0.6804,0.7267,0.5925},
{-0.8438,-0.6494,-0.7955,-0.5725,-0.5315,-0.7086,-0.6459,-0.4042,-0.7860,-0.5594,-0.9419,-0.6337,-0.5525,-0.3446,-0.5581,-0.4037},
{-0.8141,-0.8629,-0.7870,-0.5993,-0.6787,-0.5629,-0.5459,-0.7358,-0.7298,-0.7452,-0.5622,-0.5992,-0.4951,-0.5708,-0.5949,-0.6200},
{-0.7142,-0.7285,-0.9087,-0.7018,-0.7234,-0.670,-0.5431,-0.6886,-0.8364,-0.6050,-0.7131,-0.6658,-0.4868,-0.5104,-0.6668,-0.4764}
};
//圆度误差的初始化,假设的值
static GLdouble datesignalSna[6][16]={
{-1.8828,-1.9780,-1.9707,-1.9560,-1.9276,-1.9048,-1.9121,-1.9121,-1.8974,-1.9341,-1.9487,-1.9194,-1.8828,-1.8828,-1.8608,-1.8681},
{-1.8755,-1.8755,-1.9121,-1.8755,-1.8828,-1.8681,-1.8462,-1.8535,-1.8535,-1.8974,-1.9048,-1.8901,-1.8681,-1.8601,-1.8681,-1.8535},
{-1.8901,-1.8535,-1.8315,-1.8535,-1.7729,-1.7729,-1.8462,-1.8168,-1.8462,-1.8462,-1.8315,-1.8242,-1.8022,-1.8242,-1.7802,-1.8242},
{0.4469,0.4103,0.4249,0.4982,0.5055,0.5421,0.6154,0.6886,0.7619,0.8205,0.8718,0.9451,0.9817,1.0183,1.0623,1.1209},
{0.4908,0.5348,0.5714,0.6007,0.6081,0.6667,0.7619,0.8205,0.8498,0.9597,0.9670,1.0256,1.1136,1.1795,1.1502,1.2088},
{0.6374,0.6154,0.7326,0.7839,0.8498,0.8425,0.9158,0.9963,1.0476,1.0842,1.1575,1.2381,1.3114,1.3626,1.3846,1.4212}
};
static GLdouble datesignalSnb[6][16]={
{-0.1539,-0.0513,-0.0073,-0.0366,-0.0220,-0.0733,0.0073,-0.0513,-0.0220,0.0147,0.0220,-0.0147,-0.0367,-0.0147,-0.0220,0.0659},
{-0.1685,-0.2271,-0.1099,-0.1685,-0.1465,-0.1245,-0.1758,-0.1392,-0.1465,-0.0659,-0.1100,-0.0806,-0.1172,-0.1245,-0.0440,-0.1172},
{-0.1905,-0.1392,-0.1099,-0.1172,-0.1905,-0.1245,-0.1245,-0.0952,-0.586,-0.0659,-0.0733,-0.1245,-0.0440,-0.0513,-0.1099,-0.0733},
{-2.0293,-2.0146,-2.036,-2.1245,-2.1465,-2.2418,-2.1905,-2.2491,-2.1905,-2.2418,-2.2857,-2.2930,-2.2491,-2.2711,-2.3663,-2.2930},
{-2.0000,-2.0073,-2.0366,-2.1245,-2.1612,-2.1978,-2.2491,-2.2198,-2.2784,-2.2637,-2.2784,-2.3004,-2.3663,-2.3150,-2.1905,-2.3956},
{-1.8535,-1.8974,-1.9853,-2.0733,-2.1319,-2.1905,-2.2051,-2.2271,-2.2418,-2.2198,-2.3297,-2.2857,-2.3004,-2.3004,-2.2857,-2.3297}
};
static GLdouble datesignalSnc[6][16]={
{1.4505,1.4139,1.5092,1.4799,1.5604,1.4359,1.4359,1.3700,1.3919,1.3846,1.3407,1.3333,1.3114,1.2527,1.3040,1.2601},
{1.4286,1.4799,1.4872,1.4579,1.4652,1.5238,1.4505,1.4579,1.4432,1.3993,1.3846,1.3553,1.3776,1.2967,1.3114,1.3407},
{1.5092,1.5018,1.4725,1.5604,1.4872,1.5165,1.4872,1.5165,1.4432,1.3993,1.4725,1.4066,1.3846,1.3333,1.3846,1.3626},
{0.9817,0.9377,0.9890,0.8571,0.8571,0.7546,0.6667,0.5934,0.9158,0.6081,0.4762,0.4615,0.4396,0.3590,0.3297,0.2784},
{0.8425,0.8498,0.7546,0.7912,0.7106,0.6886,0.5861,0.5641,0.5641,0.4835,0.4762,0.4322,0.4249,0.3004,0.3371,0.2125},
{0.6813,0.6740,0.6667,0.5934,0.6447,0.6520,0.6300,0.5275,0.5055,0.4322,0.3590,0.3517,0.2564,0.2051,0.1978,0.1758}
};
//六个截面的三个传感器分别输出的输出值
int i,j;
for(j=0;j<M;j++)
{
for(i=0;i<N;i++)
{circlecenterx[j]+=2*Eradius[j][i]*cos(2*PI*i/N)/N;
circlecentery[j][]+=2*Eradius[j][i]*sin(2*PI*i/N)/N;
circlebangjingcha[j][]+=(c0*datesignalSna[j][i]+c1*datesignalSnb[j][i]+c2*datesignalSnc[j][i])/(c0+c1+c2)/N;
}
}
//计算出最小二乘圆心在绝对坐标系的初始位置,以及各个截面之间的半径差
//由于各个截面的圆度误差只是反映圆轮廓的变化量,所以为了重构的圆柱度形貌更加逼真,在圆度误差上加上一个常量C。
for(j=0;j<M;j+=H/(M-1))
glBegin(GL_LINE_LOOP);
{for(i=0;i<N;i++)
{pointsx[j][i]=circlecenterx[j]+(Eradius[j][i]+C+circlebanjingcha[j])*cos(2*PI*i/N);
pointsy[j][i]=circlecentery[j]+(Eradius[j][i]+C+circlebanjingcha[j])*sin(2*PI*i/N);
pointz[j][i]=j*H/M;
};
glVertex3f(pointsx[j][i],pointsy[j][i],pointsz[j][i]);
glVertex3f(pointsx[j][i+1],pointsy[j][i+1],pointsz[j][i+1]);
}
glEnd();
//分别连接M个圆面
}
主要是数组的定义,以及把二维数组给一维数组问题赋值的问题。
------解决方案--------------------
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
------解决方案--------------------
#include "stdafx.h"
#include "stdafx.h"
#include <windows.h>
# include<stdio.h>
# define PI 3.1415926 //PI的值