我正在使用 xcode v. 4.5.1 并尝试使用 C++ 项目的距离公式 (sqrt( (x1-x2)^2 + (y1-y2)^2 )) 计算两点之间的距离,但对于某些原因我的价值观没有被平方。为什么会发生这种情况,我如何平方一个值?
这里的源是点对象的向量。我正在使用的向量是 (3,4) (6,8) (50,8) (11,7)。如果我 print source[i]
, source[i+1]
or source[j]
with .x()
or.y()
最后,它们都会正确打印出来,当我 print outsource[i].x()-source[i+1].x()
等时,值是正确的。但是一旦我添加了“^2”,打印的值都是错误的。
例如,
cout<< source[i].y(); shows 4 8 8 7 (when looped over i)
但
cout<< sqrt((source[i].x()-source[i+1].x())^2 + (source[i].y()-source[i+1].y())^2);
当 i=1 时显示 1
这是我的包括:
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include "Point.h"
这是对我来说不会平方值的代码部分:
void function(vector<Point>& source){
if(source.size()>3){
for(int i=0; i<n+2; i++){
for(int j=i+2; j<n; j++){
double d1 = sqrt((source[i].x()-source[i+1].x())^2 + (source[i].y()-source[i+1].y())^2);
double d2 = sqrt((source[i].x()-source[j].x())^2 + (source[i].y()-source[j].y())^2);
if( d1 > d2){
swap( source[i+1], source[j] );
}
}
}
}