我在一个文本文件中有一组包含 10000 行和 10 列的数据。这里有一些样本——
# x1 y1 x2 y2 x3 y3 x4 y4 Area
1 0.0000 0.0000 0.8147 0.0000 0.8147 0.1355 0.0000 0.1355 0.1104
2 0.8147 0.0000 1.0000 0.0000 1.0000 0.1355 0.8147 0.1355 0.0251
3 0.8147 0.1355 0.9058 0.1355 0.9058 0.8350 0.8147 0.8350 0.0637
4 0.0000 0.1355 0.8147 0.1355 0.8147 1.0000 0.0000 1.0000 0.7043
5 0.9058 0.1355 1.0000 0.1355 1.0000 0.8350 0.9058 0.8350 0.0659
6 0.9058 0.8350 1.0000 0.8350 1.0000 1.0000 0.9058 1.0000 0.0155
7 0.8147 0.8350 0.9058 0.8350 0.9058 1.0000 0.8147 1.0000 0.0150
我想用这个程序检查这些点-
#include <iostream>
#include <cmath>
using namespace std;
double CheckPoint(){
double slope, intercept,A, B, C, D,px, py,left, top, right, bottom,dx, dy;
cin >> A; // take from column
cin >> B; // take from column
cin >> C; // take from column
cin >> D; // take from column
cin >> px; // take value from other rows and column and check
cin >> py; // take value from other rows and column and check
dx = C - A;
dy = D - B;
slope = dy / dx;
// y = mx + c
// intercept c = y - mx
intercept = B - slope * A; // which is same as D - slope * C
// For Bounding Box
if(A < C)
{
left = A;
right = C;
}
else
{
left = C;
right = A;
}
if(B < D)
{
top = B;
bottom = D;
}
else
{
top = B;
bottom = D;
}
if( slope * px + intercept > (py - 0.01) &&
slope * px + intercept < (py + 0.01))
{
if( px >= left && px <= right &&
py >= top && py <= bottom )
{
// cout the numbers of common point and the line number
}
else
// cout the numbers of common point and the line number
}
else
// cout no common point;
}
int main()
{
cout<<CheckPoint();
return 0;
}
首先我想
- 从 x1 中取 A 的值
- 从 y1 中取 B 的值
- 从 x2 中取 C 的值
- 从 y2 中取 D 的值
- 并检查它们是否与 x3、y3、x4 和 y4 有任何共同点。但它不会检查它自己的行中的值。对于其他行,此过程也将继续。
然后我想
- 从 x2 中取 A 的值
- 从 y2 中取 B 的值
- 从 x3 中取 C 的值
- 从 y3 中取 D 的值
- 并检查它们是否与 x1、y1、x4 和 y4 有任何共同点。而且如上所述,它不会检查它自己的行的值,也会申请row2,row3 ....等。
回复评论的示例
当程序取 A=0.0000 B=0.0000 C=0.8147 D=0.0000 时,它不会将值与 x3=0.8147 y3=0.1355 x4=0.0000 y4=0.1355 进行比较。即它将跳过取值的行x1,y1,x2,y2。
同样,当它从第 2 行获取 A、B、C、D 的值时,即 0.A=8147 B=0.0000 C=1.0000 D=0.0000,然后它会跳过第 2 行中的 x3,y3,x4,y4 的值.
我希望它计算匹配点的数量并返回找到该点的行数。我该怎么做?