使用坐标 x y
Working with coordinates x y
我需要从文件中读取点坐标。该文件如下所示:
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;
}
我会将该结构命名为 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
设为 class 并给它一个
距离的成员函数,这样我就可以写出类似
的东西
candidate_center_of_circle.distanceTo(point[i])
顺便说一句,我可能将变量命名为points
而不是point
因为它是一个包含多个 Point
实例的向量。
如果你打算写很多像 point[i]
这样的东西,你可能不喜欢
points[i]
,但是如果您主要是要在向量上创建 STL 迭代器
那么你会得到这样的东西:
for (std::vector<Point>::const_iterator it = points.begin(); it != points.end(); ++it)
我需要从文件中读取点坐标。该文件如下所示:
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;
}
我会将该结构命名为 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
设为 class 并给它一个
距离的成员函数,这样我就可以写出类似
candidate_center_of_circle.distanceTo(point[i])
顺便说一句,我可能将变量命名为points
而不是point
因为它是一个包含多个 Point
实例的向量。
如果你打算写很多像 point[i]
这样的东西,你可能不喜欢
points[i]
,但是如果您主要是要在向量上创建 STL 迭代器
那么你会得到这样的东西:
for (std::vector<Point>::const_iterator it = points.begin(); it != points.end(); ++it)