使用坐标x y

时间:2015-05-27 10:15:54

标签: c++ function structure coordinates geometry

我需要从点的文件坐标读取。该文件如下所示:

x0 y0

x1 y1

...

然后找到最小的圆圈的中心和直径。但我一开始就坚持了下来。 我不知道如何保持坐标并决定选择结构数组。我已将坐标读入结构中。 我要做出4个条件:

1 - 有一点,你找不到最小的圈圈。

2 - 有2分。现在的任务是找到它们与中心之间的距离。

3 - 有3分。

4 - 超过3分。使用特殊算法

我尝试使用矢量。我不知道如何在函数等中使用我的点(向量元素)。

#include "stdafx.h"
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

// Distance
float distance(){
    return  sqrt((point[0].x * point[1].x) + (point[0].y * point[1].y));
}

struct Points
{
    float x, y;
};

int _tmain(int argc, _TCHAR* argv[])
{
vector<Points> point;
Points tmp;

ifstream fin("Points.txt");

if (!fin.is_open())
    cout << "Cannot open the file \n";
else{
    while (fin >> tmp.x >> tmp.y){
        point.push_back(tmp);
        cout << tmp.x << tmp.y << endl;
    }
    fin.close();

}

return 0;
}

1 个答案:

答案 0 :(得分:2)

我会将结构命名为Point而不是Points, 因为结构的单个实例只包含一对x,y坐标。

然后合适的距离函数可能类似于

float distance(const Point& point1, const Point& point2)
{
  return  sqrt((point1.x * point2.x) + (point1.y * point2.y));
}

您可以像这样获得输入集中任意两点之间的距离:

distance(point[i], point[j])

您可能还想测量输入点的距离 不在集合中的点,例如您认为中心的点 圈子可能是。例如,

distance(point[i], candidate_center_of_circle)

如果是我的代码,我可能会让Point成为一个类并给它一个 成员函数的距离,所以我可以写像

candidate_center_of_circle.distanceTo(point[i])

顺便说一句,我可能将变量points命名为point而不是Point 因为它是一个包含多个point[i]实例的向量。 如果你打算写points[i]之类的东西,你可能不喜欢 for (std::vector<Point>::const_iterator it = points.begin(); it != points.end(); ++it) ,但是如果你主要是在向量上创建STL迭代器 那么你会有这样的事情:

fixed-rate