我试图在C++中求出从点3(newPoint)到点1(prevPoint)和点2(curPoint)形成的直线的垂直距离。
我以前用过这个公式,但现在经过反复检查,我怀疑我的程序的正确性。
编辑:所有点(prevPoint、curPoint、newPoint)都是Point类型
struct Point {
string name;
int x;
int y;
bool visited;
};
double d = distance(prevPoint, curPoint);
double dx = (curPoint.x - prevPoint.x) / d;
double dy = (curPoint.y - prevPoint.y) / d;
double distToLine = abs((newPoint.x - prevPoint.x) * dy - (newPoint.y - prevPoint.y) * dx);
distance
函数:
double distance(Point a, Point b) {
double dx = a.x - b.x;
double dy = a.y - b.y;
return sqrt(dx * dx + dy * dy);}
我的代码是正确的吗?我需要一些正确的公式,如果它不是。谢谢!
2条答案
按热度按时间xqnpmsa81#
在您的情况下,formula将如下所示:
xxb16uws2#
在下面的测试代码中,您的代码与我的代码具有相同的结果。