正方形C++中的点
Point within a Square C++
我正试图用c++来解决这个特殊的问题。
问题:给定欧几里得几何平面上的一组(x,y)坐标,以及定义正方形的一组四个(x,y)坐标,我需要确定是否所有点都包含在定义的正方形内。在正方形的边上或正方形的角上找到的点算作正方形中的点。正方形不一定与轴线平行。
输入有点有趣,没有提示,只是严格输入坐标。
输入:一组逗号分隔的(x,y)坐标,用空格分隔。前四个坐标定义了正方形的角(没有特定的顺序),逗号分隔的坐标的其余部分将是点。
例如:0,0 0,5 5,0 5,5 1,1 2,2 3,3(定义一个有角(0,0)/(0,5)/(5,0)/(5.55)和三个点(1,1)/(2,2)/(3,3)的正方形)我假设最好的做法是使用getline,然后解析输入。
如果至少有一个点在正方形之外,则输出为true或false。
我很难理解这一点,我真的很感激帮助。
对于输入,我建议查找Inserter interator。
类似以下内容:
#include <iostream>
#include <iterator>
#include <vector>
class point
{
public:
friend
std::istream&
operator>>(std::istream& in, point& data)
{
char separator;
in >> data.m_x >>separator >>data.m_y ;
}
friend
std::ostream&
operator<<(std::ostream& out, point& data)
{
out<< "("<<data.m_x<<','<<data.m_y<<")";
return out;
}
private:
double m_x, m_y;
};
int
main (int ac, char **av)
{
std::vector<point> buffer;
std::copy(
std::istream_iterator<point>(std::cin),
std::istream_iterator<point>( ),
std::back_inserter(buffer)); // copies all data into buffer
std::cout<<"buffer size = "<<buffer.size()<<std::endl;
for(size_t i=0;i<buffer.size();++i){
std::cout<<buffer[i]<<std::endl;
}
}
用法:
./a.out
1,2 3,4 5,6 q
buffer size = 3
(1,2)
(3,4)
(5,6)
如果您在解析代码时遇到问题,请显示到目前为止所获得的内容。当你的解析工作时,这里有一个很棒的解决方案来确定一个点是否在任何多边形内:http://alienryderflex.com/polygon/
相关文章:
- 试试完美的正方形,你能给点小费吗
- OpenGL绘制三角形而不是正方形
- 在 OpenGL 中旋转一个正方形
- (C++) 解密自定义的波利比乌斯正方形
- 使用变异模板的正方形总和
- 我无法完全理解这段代码来检查一个完美的正方形
- 编写一个函数,用递归函数检查数字是否是正方形
- QScriptEngine评估数字C 的正方形或立方体
- 无法获取索引缓冲区以在 OpenGL 中绘制正方形
- 图形面积(等分三角形、正方形、五角形、六边形、七重奏、八进制)使用 if-else (C++)
- 如何在 cpp 中绘制带有图案的填充正方形
- 打印最大非完美正方形
- 我的任务是在框架内打印一个字符串,例如一个正方形
- 渲染正方形时的 OpenGL 黑屏
- 检查4分是否为正方形
- 计算填充国际象棋64正方形所需的米饭总数
- 简单的C 嵌套以用于循环程序,以打印带有星星错误的正方形
- 找出一个正方形逻辑中可能的网格数量,但代码不接受超过六个输入,它停止并说.exe停止工作
- 算法以准确检测正方形和圆之间的重叠
- OPENCV:为击中创建一个正方形结构元素