bool CCarPark::cal()
{
double Rmin = Al / tan(Amax * PI / 180);
double D = 200; //预留宽度
double M = (Al + Ef) * (Al + Ef) + 2 * Rmin * Vm + (2 * Rmin - Vm) * D - D * D;
//求最小车位长
double SL = sqrt(M) + Er + D;
// 求theta角
double P = Vm / 2 - Rmin + D;
double Q = (Vm * D - 2 * Rmin * D + D * D + (Er + D - SL) * (Er + D - SL)) / (4 * Rmin) + Rmin;
double a = (SL - D - Er) * (SL - D - Er) + (Rmin - Vm / 2 - D) * (Rmin - Vm / 2 - D);
double b = 2 * (Er + D - SL) * Q;
double c = Q * Q - P * P;
double Ang = asin((-b - sqrt(b * b - 4 * a * c)) / (2 * a)); //与x轴的角度(弧度的表示形式)
double theta = Ang * 180 / PI; //转换为角度表示形式
//求起始点坐标,以车位左下角为圆心
static int x0 = 2 * Rmin * sin(Ang) + Er + D; //横坐标
static int y0 = 2 * Rmin - 2 * Rmin * cos(Ang) - Vm / 2 + Ws - D; //纵坐标
//转换点坐标
int x1 = x0 - Rmin * sin(Ang);
int y1 = y0 - Rmin * (1 - cos(Ang));
//对车身轨迹进行描点
for (int i = 0; i <= 265; i++)
{
double N = 10 * i / Rmin;
m_pxTrack[i].x = x0 - Rmin*sin(N);
m_pxTrack[i].y = Rmin*cos(N) + y0 - Rmin;
}
return true;
}
int main()
{
CCarPark park(38,4475,1840,925,905,2645);
park.cal();
cout << SL << endl;
cout x0 << "," << y0 << endl;
system("pause");
return 0;
}
程序太长,就不全部po出来了,这是一部分,该定义的都定义了,现在就想在main()函数里面输出SL和x0与y0,求助大神,最近经常在这种小问题上出错,看来还是基础没打好,谢谢