gpt4 book ai didi

c++ - 交线 : error in vector functions

转载 作者:行者123 更新时间:2023-11-28 03:50:49 26 4
gpt4 key购买 nike

我想计算由 2 个平面给出的交线。我的主程序给了我平面参数 a、b、-1、d(我的方程是 ax+by-z+d=0)。所以,我计算交线方程的函数是;

vector<double> LineofIntersection(vector<double> plane1,vector<double> plane2) {
double a1=plane1.at(0); double a2=plane2.at(0);
double b1=plane1.at(1); double b2=plane2.at(1);
double d1=plane1.at(2); double d2=plane2.at(2);
int c1=-1,c2=-1;
double cros_x=fabs((b1*c2)-(b2*c1));
double cros_y=fabs((a2*c1)-(a1*c2));
double cros_z=fabs((a1*b2)-(a2*b1));
vector <double> point; vector <double> pointout;

int maxc; // max coordinate
if (cros_x > cros_y){
if (cros_x > cros_z)
maxc = 1;
else maxc = 3;
}
else {
if (cros_y > cros_z)
maxc = 2;
else maxc = 3;
}
//
vector <double> point; vector <double> pointout;
switch (maxc) { // select max coordinate
case 1: // intersect with x=0
point.at(0)=0;
point.at(1)=(d2-d1)/(b2-b1);
point.at(2)=(b1*d2-2*b1*d1+d1*b2)/(b2-b1);
break;
case 2: // intersect with y=0
point.at(0)=(d2-d1)/(a1-a2);
point.at(1)=0;
point.at(2)=(a1*d2-a2*d1)/(a1-a2);
break;
case 3: // intersect with z=0
point.at(0)=(b1*d2-b2*d1)/(a1*b2-a2*b1);
point.at(1)=(a2*d1-a1*d2)/(a1*b2-a2*b1);
point.at(2)=0;
break;
}
pointout.push_back(point.at(0));
pointout.push_back(point.at(1));
pointout.push_back(point.at(2));
return pointout;
}

在主程序中,我称这个函数为:

vector<double> linep=LineofIntersection(plane1,plane2);
cout<<linep.at(1)<<" "<<linep.at(1)<<" "<<linep.at(2);

但是,我收到错误消息并且无法运行该程序。请提供任何帮助。

最佳答案

从根本上说,您的问题是您在没有首先分配它们的情况下分配给 point vector 中的位置。此外,pointout 没有任何用处,并且您有语法错误。以下是我的建议:

 vector <double> point; vector <double> pointout;

这一行出现了两次。删除第一次出现的行,并将第二个实例替换为:

vector <double> point(3);

注意 (3)。没有它,point 是一个空 vector ,即它根本没有 double 。有了它,它有 3 个 double 。

pointout 对象没有任何作用。替换这两行:

pointout.push_back(point.at(0));pointout.push_back(point.at(1));pointout.push_back(point.at(2));
return pointout;

用这一行:

return point; 

关于c++ - 交线 : error in vector functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5567995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com