我不知道如何找到我所说的第三点。
但是,我尝试写代码写这个:
float extraX; // x of the third point
float extraY; // y of the third point
float extraZ; // z of the third point
void CalculateExtraPoint(float x1, float y1, float z1, float x2, float y2, float z2){
float range = extraRange; //range from the first point to third point
float d_x = x1-x2;
float d_y = y1-y2;
float d_z = z1-z2;
distance1_2 = sqrt(pow(d_x,2)+pow(d_y,2)+pow(d_z,2));
float temp = (range/distance1_2)+1;
extraX = x2 + (temp*d_x);
extraY = y2 + (temp*d_y);
extraZ = z2 + (temp*d_z);
}
它来自矢量方程,r =(x2,y2,z2)+(lambda)[x1-x2,y1-y2,z1-z2]。 r是任何一点。
这是对的吗?提前谢谢。
答案 0 :(得分:0)
是的,这是正确的。
稍微简单,更方便的变体。这里更清楚的是我们从第一点开始考虑范围:
float temp = range/distance1_2;
extraX = x1 + (temp*d_x);
extraY = y1 + (temp*d_y);
extraZ = z1 + (temp*d_z);